リバースプロキシ
リバースプロキシは Semaphore の前段に置かれて TLS を終端します。これにより、ブラウザーと ランナーは HTTPS でプロキシと通信し、Semaphore 自体はローカルインターフェース上で平文の HTTP を待ち受けます。Semaphore には組み込みの TLS も あるため、プロキシは必須ではありません。すでにプロキシを運用している場合、証明書を別の 場所で管理する必要がある場合、Semaphore をサブパスで公開したい場合、または 1 台のホストで 複数のサービスを提供する場合にプロキシを使ってください。
どの構成でも必ず対応すべき事項
どのプロキシを選ぶ場合でも、次の 3 点が正しくないと、インターフェースの一部が 原因を特定しにくい形で動作しなくなります。
/api/wsでの WebSocket アップグレード。 タスクログは WebSocket でストリーミング されます。アップグレードのヘッダーがないと、タスクの実行中もログウィンドウは空のままです。- ping の間隔より長い読み取りタイムアウト。 Semaphore はアイドル状態の WebSocket に 対して約 2 分ごとに ping を送ります。アイドル接続を 60 秒で閉じるプロキシでは、ログ表示が 繰り返し切断されます。
- 公開 URL に設定された
web_host。 Semaphore はこの値からリダイレクト URL を組み立て、 クッキーのSecureフラグを設定し、リクエストのオリジンを検証します。ブラウザーが使った URL と一致しないとサインインに失敗します。 設定を参照してください。
このセクションの内容
| ページ | 内容 |
|---|---|
| nginx | TLS、WebSocket のアップグレード、転送ヘッダーを含む server ブロックです。 |
| Apache | mod_proxy と mod_proxy_wstunnel を使う仮想ホストです。 |
| Caddy | 証明書を自動取得する最小限の Caddyfile です。 |