コンテンツにスキップ

リバースプロキシと URL ベース

セットアップ

リバースプロキシの後ろで、HolyArrs を https://home.example/holyarrs のようなアドレスに置きます。

リバースプロキシは、アプリの手前に置く Web サーバーで、アドレスごとに正しいコンテナへ振り分けます。URL ベースは、HolyArrs を置くパスです。

  1. compose ファイルにパスを追加します。

    services:
    holyarrs:
    environment:
    - HOLYARRS_URL_BASE=/holyarrs
  2. コンテナを再起動します。

  3. プロキシの例からプロキシのルールを追加します。

  4. https://home.example/holyarrs/ を開きます。サインインページが表示されます。Settings > This app に、使用中のパスが表示されます。

場所 反映されるタイミング
HOLYARRS_URL_BASE 起動時。ほかの設定より優先されます。
-url-base /holyarrs フラグ 起動時。変数が設定されていない場合。
Settings > This app 次回の起動時。変数とフラグがどちらも設定されていない場合だけ。

nginx-proxy-manager. ドメイン用のプロキシホストを作成し、カスタムロケーションを追加します。

  • Location: /holyarrs
  • Forward hostname は holyarrs、ポートは 6262。末尾にスラッシュを付けないでください。付けるとパスが取り除かれます。
  • そのロケーションの歯車のボックスに、次を入力します。
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_buffering off;
proxy_read_timeout 1h;

Traefik. StripPrefix ミドルウェアは追加しないでください。

labels:
- traefik.enable=true
- traefik.http.routers.holyarrs.rule=Host(`home.example`) && PathPrefix(`/holyarrs`)
- traefik.http.services.holyarrs.loadbalancer.server.port=6262

Caddy. handle を使います。handle_path はパスを取り除きます。

home.example {
handle /holyarrs* {
reverse_proxy holyarrs:6262 {
flush_interval -1
}
}
}

ホスト名とプロキシのアドレス

ホスト名とプロキシのアドレス へのリンク
  • HolyArrs にホスト名でアクセスする場合は、そのホスト名を HOLYARRS_ALLOWED_HOSTS に追加します。
  • プロキシが X-Forwarded-For を付ける場合は、プロキシのアドレスを HOLYARRS_TRUSTED_PROXIES に追加します。追加しないと、サインインのときに、誰が自宅のネットワークにいるのかを判別できません。
症状 原因 対処
どのページも not found になる プロキシがパスを取り除いている パスを取り除く設定、または末尾のスラッシュを削除します。
ライブ更新が届かない プロキシが応答をバッファリングしている バッファリングをオフにします(proxy_buffering off、flush_interval -1)。
保存したパスのせいで入れなくなった 保存したパスが間違っている HOLYARRS_URL_BASE=/ を付けて起動し、保存したパスを無視させます。
サインインでネットワークの外にいると判定される プロキシが信頼されていない X-Real-IP と X-Forwarded-For を送り、HOLYARRS_TRUSTED_PROXIES を設定します。

ほかの対処: トラブルシューティング。

パスのルール
  • 使える文字: 英字、数字、-、_、.、/。.. と // は使えません。
  • holyarrs、/holyarrs、/holyarrs/ は、どれも /holyarrs を意味します。
  • 保存したパスが有効でない場合は、無視されます。
  • すべてがそのパスの下に移ります。ページ、API、ライブ更新、サインイン、HolyArrs が作るリンク(招待リンク、カレンダーフィード)です。
  • /healthz と /readyz はルートでも応答するので、イメージ自体のヘルスチェックはそのまま動きます。
  • パスの外にあるそのほかのアドレスは、not found を返します。
プロキシに必要なこと
必要なこと 理由
パスを変えずに渡す HolyArrs は完全なパスで振り分けます。
Host ヘッダーを保つ ホストの確認と、HolyArrs が作るリンクに使います。
応答をバッファリングしない ライブ更新は、開いたままの 1 つの応答で流れます。
長い読み取りタイムアウト(1 時間) ライブ更新のストリームは開いたままになります。

HolyArrs は無料です。時間の節約になったら、GitHub でスターを付ける、スポンサーになる、コーヒーをおごるのいずれかで応援してください。