はじめに
Proxerをインストールし、ローカルHTTPサービスを公開します。
このページでは、よくある構成を使います。公開サーバーがインターネットからのトラフィックを受け、実際のアプリはノートPCやプライベートなマシンで動きます。プライベート側のマシンは、公開サーバーへ外向きに接続できれば十分です。
必要なもの
- HTTP/WebSocketトラフィックを受けられる公開マシン、またはreverse proxy。
- 公開したいローカルHTTPサービス。
インストール
Windows
GitHub ReleasesからWindows用の単体実行ファイルをダウンロードします。
proxer.exe --version
macOS / Linux
brew install tinyrack-net/tap/proxer
Docker
docker run --rm tinyrack/proxer --version
サービスを1つ公開する
次のwss://とhttps://の例では、Proxerの前段でTLSを終端している前提です。多くの場合、Caddy、Traefik、NGINX、ロードバランサーがTLSを受け、Proxerへはloopbackまたはプライベートネットワーク経由でHTTP/WebSocketを渡します。
-
公開サーバーを起動する
公開トラフィックを受けるマシンで実行します。
proxer server --listen 0.0.0.0:8080 --domain your-server.example.com --token dev-token同じポートで公開リクエストとトンネル制御WebSocketを処理します。
-
ローカルアプリを起動する
クライアントマシンでHTTPサービスを起動します。動作確認ならPythonサーバーで十分です。
python3 -m http.server 3000 --bind 127.0.0.1 -
自動サブドメイン経路を登録する
--subdomainを省略すると、サーバーがランダムなサブドメインを割り当てます。proxer http 3000 \ --server wss://your-server.example.com \ --token dev-token -
割り当てられたホストを呼ぶ
クライアントが表示した
subdomain: px-...とpublic URLを使います。curl https://px-k7m3q9t2ab.your-server.example.com/ -
サブドメイン経路を登録する
名前付きの経路が必要なら
--subdomainを使います。proxer http 3000 \ --server wss://your-server.example.com \ --subdomain demo \ --token dev-token -
サブドメインホストを呼ぶ
curl https://demo.your-server.example.com/ルートホストが必要な場合だけ
--subdomain @を使ってください。このモードは、サーバーを--domain付きで起動している場合に最も分かりやすく動きます。
dev-tokenはデモとローカルテスト用です。実運用では、長いランダム値をPROXER_TOKEN、コンテナsecret、Kubernetes secret、またはプラットフォームのsecret保存先から渡してください。
ローカルテストではHostヘッダーで行き先のトンネルが決まります。本番では、DNSとreverse proxyが元のホスト名を保つようにしてください。
ローカルだけで試す
まだDNSがない場合は、同じマシンですべて動かし、Hostヘッダーだけ明示します。
python3 -m http.server 3000 --bind 127.0.0.1
proxer server --listen 127.0.0.1:8080 --domain proxy.localhost --token dev-token
proxer http 3000 --server ws://127.0.0.1:8080 --subdomain demo --token dev-token
curl -H 'Host: demo.proxy.localhost' http://127.0.0.1:8080/
リクエストの流れは仕組みを、Traefik/Caddy/NGINXの背後に置くときの注意点はルーティングと信頼済みプロキシを見てください。