逆プロキシー Napier(1)

  Napier

ogochan

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

waspcojp / napier

PS.

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

最近のエントリー

404 WASP not found

第12回 「パーソナルサーバ」について考える

Jar Gardenに植物を植える

新しいお友達

Google翻訳、ChatGPT、Gemini...

Node.jsでGemini 1.5 FlashをAPI経由で使う

今日は「ぴろろんの日」

Node.jsでGPT-4oをAPI経由で使う

遠隔手話通訳実験

LLMと戯れてみる

新刊情報の収集

最近のできごと

Hieronymusのインボイス番号対応について

会計システム「Hieronymus」の現状

OrangePi5にZabbixをインストールする

オープンソースのノートアプリ「SiYuan」 - CasaOS AppStoreレビュー

お気に入りの色さがし1

創立記念日

SPDX License Listをデータ化した

Orange Pi5でC3TR-Adapterを試す