Google Compute Engine에서 HTTP (S)로드 밸런서를 사용할 때 모든 HTTP 트래픽을 HTTPS로 리디렉션 2 개의 글로벌 전달 규칙 (HTTP

Google Compute Engine에서 2 개의 글로벌 전달 규칙 (HTTP 및 HTTPS)으로 HTTP / HTTPS로드 밸런싱을 설정했습니다. 각 규칙은 HTTP 프로토콜을 가진 백엔드 서비스를 가리 킵니다.

모든 요청을 (으) http://*로 이동 하고 싶습니다 https://*.

로드 밸런서가 HTTP를 통해 백엔드 서비스와 통신 할 때 백엔드 서비스에서 nginx를 가져 와서를 보낼 수 있다고 생각하지 않습니다 301.

Google Compute에 대한 수십 가지의 미세 조정을 시도했으며 모두 Google Compute를 반환합니다 502.

다른 사람이 전에 이것을 설정했다고 확신합니다. 올바른 방향의 팁이나 포인터는 대단히 높이 평가됩니다.



답변

HTTP / HTTPS로드 밸런서를 사용하여 유사한 설정을 수행했으며 HTTPS를 강제로 관리했습니다. 로드 밸런서에서 직접 가능하지는 않지만 백엔드 서비스에서 설정할 수 있습니다. Google Cloud로드 밸런서는 X-Forwarded-Proto http 헤더를 http 또는 https 값으로 설정합니다. 백엔드 서비스 에서이 헤더를 확인하고 (이 경우 Varnish이지만 Nginx에서도 수행 할 수 있음) 값이 http 인 경우 301을 다시 보냅니다.


답변

오늘이 문제에 직면했으며 TCP로드 균형 조정을 사용하여 해결할 수있었습니다. HTTP / HTTPS 특정로드 밸런서 옵션이 필요하지 않은 경우 TCP로드 밸런서 (SSL 없음)를 사용하여 포트 80 및 443으로 트래픽을 수신 할 수 있습니다. 포트 80에서 트래픽의 경우 301을 다시 보낼 수 있습니다.