bin/init --tls、overleaf.rc 中的 NGINX_* 與 TLS_*)在此沒有對應項目;Toolkit 的說明請參閱 TLS 代理。
代理必須做到的事項
- 傳遞 WebSocket(
/socket.io)。 - 允許長達 10 分鐘的請求(長時間編譯)以及 50 MB 的請求內容(上傳),或
MAX_UPLOAD_SIZE。 - 讓其對 Pod 的閒置 keep-alive 逾時低於 65 秒,即 Pod 中 nginx 的逾時時間。
- 傳送
X-Forwarded-For與X-Forwarded-Proto: https。 - 若有多個副本,請讓使用者停留在同一個副本上,請參閱水平擴展。
ConfigMap
X-Forwarded-Proto: https,Ayakaleaf Pro 會認為請求是透過 HTTP 送達,因而不會設定其安全工作階段 Cookie:登入將會失敗。只有當使用者確實透過 HTTPS 連線至網站時,才設定 OVERLEAF_SECURE_COOKIE;任何值都會啟用它,即使是 "false"。
HAProxy 範例
若要在水平擴展的 HAProxy DaemonSet 中終止 HTTPS,請將憑證及其金鑰放入同一個 PEM 檔案與一個 Secret 中:80-haproxy.yaml:
80-haproxy.yaml (changes)
config-hash 讓 HAProxy 重新啟動,然後依上述方式設定 ConfigMap 並重新啟動副本。
重新導向會保留請求的連接埠:這適用於位於連接埠 80 與 443 的負載平衡器,但在 NodePort 上,它會將 http://host:30081 導向 https://host:30081。若前方沒有負載平衡器,請省略重新導向這一行,並提供使用者 https://...:30443 位址。
在 Kubernetes 上的測試
在 Kubernetes 1.37 上以三個副本並如上所述由 HAProxy 終止 HTTPS,OVERLEAF_SITE_URL 使用 https:// 並設定 OVERLEAF_SECURE_COOKIE:使用者可透過 https:// 連結啟用帳號、以標記為 Secure 的工作階段 Cookie 登入、上傳並編譯專案且成功取得 PDF、停留在自己的副本上、開啟編輯器的 WebSocket(wss),並透過 HTTPS 以 Git 進行複製與推送。NodePort 上的 http:// 請求則如上所述,被重新導向至相同連接埠的 https://。
