ハードウェアからサーバ・アプリまでワンストップで開発

逆プロキシー Napier(1)

  Napier

ogochan

脱クラウド計画(0)の続きです。

あれからちょっと改良して、認証とか転送ルール(プロファイルと呼んでます)を実装しました。

ローカルで試した範囲では、バーチャルホストも動いているようです。

原理はこの前書いた通りです。

「セション」という概念を作りました。

これは「プロキシする振り分け」の単位です。トンネルはこれ毎に存在しています。

この振り分けのためのルールを「プロファイル」ということにして、ホスト名やパスを指定します。

「ユーザ」は複数の「プロファイル」を持てますが、'start'する時にどのプロファイルを使用するか指定します。

この辺まで動いているので、次のステップではユーザ情報やプロファイルを永続化するためにDBを使うようにしようと思ってます。

テストしていて気がついたのですが、URLの構造で

http://ホスト名/振り分け用パス/それ以下

というのを仮定しているのですが、単純にプロキシ先に転送すると、URLは

/振り分け用パス/それ以下

というものが送られてしまうので、「振り分け用パス」を考慮しないでいると、コンテンツは見つかりませんね。

他方、これを嫌って転送前に「振り分け用パス」を消してしまうと、コンテンツの中で使うURLに「振り分け用パス」がついていないので、うまくリクエストが振り分けられません。

当たり前と言えば当たり前なんですが、ちょっと使い辛いような気がしないでもないです。ちゃんとbaseが書いてあったり相対パスで参照していれば期待通りの動きをすると思うので、「そんなもの」とも言えますけどね。

バーチャルホストの場合はホスト名だけで振り分けますから、このような問題は起きません。

一応、今は「振り分け用パス」は転送時に書き換えてしまって、「それ以下」だけにして転送してます。

上記の変更をしたものを、pushしておきました。

waspcojp / napier

PS.

ポートの管理がおかしいので修正しました。これでクライアントが切断/接続しても問題なくなりました。

最近のエントリー

現在の営業品目(2)

現在の営業品目(1)

SPDX License Listをデータ化した

Orange Pi5でC3TR-Adapterを試す

CasaOS上で会計システム「Hieronymus」を動かす

会計システム「Hieronymus」v1.0.0 リリースしました

CasaOSでファイル同期アプリSyncthingをセットアップする

第11回 Freshmeat

オープンソースノーコード「Activepieces」でワークフローを作る

RaspberryPiにパーソナルクラウドOS「CasaOS」を導入する

sequelize-cliでdb:migrateすると「SyntaxError: Unexpected token ':'」が出る

LED行燈の試作(2)

CMSの社内向けサービスのリニューアル

LED行燈の試作(1)

エントリを書くこと

お手軽ポップコーン

VR徘徊(5) StereoPi V1でROSを動かす

VR徘徊(4) StereoPi Ver 1でUbuntu 22.04を動かす

新しいおもちゃ

執筆進捗