Skip to main content
Pod 内では、コンテナの nginx がポート 80 でプレーンな HTTP を提供します。HTTPS は Pod の前段で終端します。Ingress コントローラー、クラウドのロードバランサー、または水平スケーリングにあるような HAProxy です。Toolkit の NGINX プロキシ(bin/init --tls、overleaf.rc の NGINX_* と TLS_*)に相当するものはありません。Toolkit については TLS プロキシを参照してください。

プロキシに必要な要件

  • WebSocket(/socket.io)を通過させること。
  • 10 分間のリクエスト(長時間のコンパイル)と 50 MB(または MAX_UPLOAD_SIZE)のリクエストボディ(アップロード)を許可すること。
  • Pod に対するアイドル時の keep-alive タイムアウトを、Pod 内の nginx のタイムアウトである 65 秒未満にすること。
  • X-Forwarded-For と X-Forwarded-Proto: https を送信すること。
  • 複数のレプリカを使う場合は、ユーザーを 1 つのレプリカにとどめること。水平スケーリングを参照してください。

ConfigMap

信頼されたアドレスから X-Forwarded-Proto: https が送られない場合、Ayakaleaf Pro はリクエストが HTTP で届いたと判断し、セキュアなセッション Cookie を設定しません。その結果、ログインに失敗します。OVERLEAF_SECURE_COOKIE は、ユーザーが実際に HTTPS でサイトにアクセスする場合にのみ設定してください。値に関係なく("false" でも)有効になります。

HAProxy の例

水平スケーリングの HAProxy DaemonSet で HTTPS を終端するには、証明書とその鍵を 1 つの PEM ファイルにまとめ、Secret に格納します。
次に 80-haproxy.yaml を変更します。
80-haproxy.yaml (changes)
HAProxy が再起動するように config-hash を更新し、上記のとおり ConfigMap を設定してレプリカを再起動します。 リダイレクトはリクエストのポートを維持します。ポート 80 と 443 のロードバランサーには適していますが、NodePort では http://host:30081 を https://host:30081 に送ってしまいます。前段にロードバランサーがない場合は、リダイレクトの行を省き、ユーザーには https://...:30443 のアドレスを案内してください。

Kubernetes でのテスト

Kubernetes 1.37 上でレプリカ 3 つ、上記のように HAProxy で HTTPS を終端し、OVERLEAF_SITE_URL を https:// に、OVERLEAF_SECURE_COOKIE を設定した状態でテストしました。ユーザーは https:// のリンクからアカウントを有効化し、Secure 属性付きのセッション Cookie でログインし、プロジェクトをアップロードしてコンパイルして PDF を取得し、同じレプリカにとどまり、エディターの WebSocket(wss)を開き、HTTPS 経由で Git のクローンとプッシュを行えました。NodePort での http:// リクエストは、上記のとおり同じポートの https:// にリダイレクトされました。
最終更新日 2026年11月2日