bin/init --tls, overleaf.rc의 NGINX_* 및 TLS_*)에 해당하는 것은 없습니다. Toolkit에 대해서는 TLS 프록시를 참조하세요.
프록시가 해야 하는 일
- WebSocket(
/socket.io)을 전달합니다. - 10분 길이의 요청(긴 컴파일)과 50 MB(업로드) 또는
MAX_UPLOAD_SIZE크기의 요청 본문을 허용합니다. - 파드 방향의 유휴 keep-alive 타임아웃을 파드 내 nginx의 타임아웃인 65초보다 짧게 유지합니다.
X-Forwarded-For와X-Forwarded-Proto: https를 보냅니다.- 레플리카가 여러 개인 경우 사용자를 하나의 레플리카에 유지합니다. 수평 확장을 참조하세요.
ConfigMap
X-Forwarded-Proto: https가 전달되지 않으면 Ayakaleaf Pro는 요청이 HTTP로 도착했다고 판단하여 보안 세션 쿠키를 설정하지 않으며, 그 결과 로그인이 실패합니다. OVERLEAF_SECURE_COOKIE는 사용자가 실제로 HTTPS로 사이트에 접근할 때만 설정하세요. "false"를 포함하여 어떤 값이든 설정하면 활성화됩니다.
HAProxy 예시
수평 확장의 HAProxy DaemonSet에서 HTTPS를 종료하려면 인증서와 키를 하나의 PEM 파일로 합쳐 Secret에 넣으세요.80-haproxy.yaml을 변경하세요.
80-haproxy.yaml (changes)
config-hash를 변경한 다음, 위와 같이 ConfigMap을 설정하고 레플리카를 재시작하세요.
리디렉션은 요청의 포트를 유지합니다. 포트 80과 443의 로드 밸런서에는 적합하지만, NodePort에서는 http://host:30081을 https://host:30081로 보냅니다. 앞단에 로드 밸런서가 없다면 리디렉션 줄을 빼고 사용자에게 https://...:30443 주소를 안내하세요.
Kubernetes에서의 테스트
레플리카 세 개와 위와 같이 HTTPS를 종료하는 HAProxy를 두고,OVERLEAF_SITE_URL을 https://로, OVERLEAF_SECURE_COOKIE를 설정한 Kubernetes 1.37에서: 사용자는 https:// 링크로 계정을 활성화하고, Secure로 표시된 세션 쿠키로 로그인했으며, 프로젝트를 업로드하고 컴파일하여 PDF를 가져왔고, 자신의 레플리카에 머물렀으며, 편집기의 WebSocket(wss)을 열고, HTTPS를 통해 Git으로 clone 및 push했습니다. NodePort의 http:// 요청은 위에서 설명한 대로 같은 포트의 https://로 리디렉션되었습니다.
