コンテンツにスキップ
Proxer Proxer v0.5.0

ルーティングと信頼済みプロキシ

ルートおよびサブドメインホストをルーティングし、reverse proxy背後で運用します。

Proxerは公開リクエストをホスト名でルーティングします。すべての経路が明示的なので、別々のクライアントが混ざることはありません。


ルート経路とサブドメイン経路

Section titled “ルート経路とサブドメイン経路”

公開ドメインを指定してサーバーを起動します。

proxer server --listen 0.0.0.0:8080 --domain proxy.example.com --token dev-token

--subdomainなしのクライアントはルート経路を登録します。

proxer http 3000 --server ws://proxy.example.com:8080 --token dev-token

proxy.example.comへのリクエストはこのクライアントへ送られます。

--subdomain demoを指定したクライアントはdemo.proxy.example.comを登録します。

proxer http 3000 --server ws://proxy.example.com:8080 --subdomain demo --token dev-token

不明なホストへのリクエストは404を返します。


DNSなしでテストするときは、ホストを明示します。

curl -H 'Host: demo.proxy.example.com' http://127.0.0.1:8080/

localhostやIPアドレス宛てのリクエストは、接続済みクライアントへ自動ルーティングされません。


Traefik、Caddy、NGINXなどのreverse proxyをProxerの前に置く場合は、元のHostヘッダーを保持してください。Traefikでは通常、passHostHeaderを有効にしたデフォルト動作のままで問題ありません。

次に、どのプロキシアドレスからのforwardedヘッダーを信頼するかをProxerへ伝えます。

proxer server \
--listen 0.0.0.0:8080 \
--domain proxy.example.com \
--trusted-proxy loopback \
--trusted-proxy private

環境変数ではcomma-separated形式を使います。

PROXER_TRUSTED_PROXIES=loopback,private,10.42.0.0/16 proxer server --domain proxy.example.com

信頼済みプロキシはX-Forwarded-ForX-Real-IPX-Forwarded-HostX-Forwarded-Protoを提供できます。信頼していないpeerからのforwardedヘッダーは、ルーティング判断に使われません。


すべてのProxer内部エンドポイントは/__proxer__/配下にあります。

/__proxer__/control
/__proxer__/health/live
/__proxer__/health/ready

これらのパスをローカルアプリへルーティングしないでください。公開サーバー自身が処理します。