Google Compute Engine에서 HTTP (S)로드 밸런서를 사용할 때 모든 HTTP 트래픽을 HTTPS로 리디렉션


18

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

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

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

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

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


HTTP를 HTTPS로 리디렉션 (SSL 사용)은 현재 HTTP / HTTPS로드 밸런서를 통해 지원되지 않습니다. 웹 서버에서 리디렉션을 구성해야합니다 (apache, nginx 등). 이에 대해 Compute Engine 공개 문제 추적기 ( code.google.com/p/google-compute-engine/issues/list ) 에 기능 요청을 제출하는 것을 망설이지 마십시오 .
파이 잔


완벽합니다. 기능 요청을 엔지니어링에 전달했습니다.
파이 잔

@Faizan-이 기능을 사용할 수있는 타임 라인이 있습니까? 기능이 요청 된 지 약 2 년이 지났습니다. 해결 방법은 복잡합니다.
talonx

이 요청에 대한 새 링크는 issuetracker.google.com/issues/35904733입니다 (이전 링크는 여전히 리디렉션 됨).
Daniel Compton

답변:


19

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


8
감사! 후손을 위해 : if ($http_x_forwarded_proto = "http") { return 301 https://$host$request_uri; }
Ryan Leckey

당신은 HTTP를 사용한다 426: 더 많은 301 읽기보다는 헤더를 업그레이드 stackoverflow.com/questions/17873247/...
비 크람 Tiwari 보낸

3
Vikram에 동의하지 않습니다. SEO 목적으로 301을 사용해야합니다. 4xx 제품군 코드를 반환하면 페이지 http가 이전 http를 가리키는 링크에서 https를 통해 흐르지 않습니다. 적어도 사이트의 SEO에 관심이 있다면 301이 예상되는 코드입니다.
cyrrill

1
@VikramTiwari, 게시물 답변은 실제로 "http : //에서 https : //로 업그레이드하는 것조차 아닙니다"
Rambatino

1

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


1
포트 80 doc 에는 tcp로드 밸런싱이 허용되지 않습니다. > TCP 프록시로드 밸런싱은 다음 포트를 지원합니다. 25, 43, 110, 143, 195, 443, 465, 587, 700, 993, 995, 1883, 5222
Giovanni Toraldo
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.