6

전달이이 설정있어 https://support.cloud.engineyard.com/entries/21715452-use-elastic-load-balancing-with-engine-yard-cloud엔진 마당 레일은 응용 프로그램 - 탄성로드 밸런서 (ELB)에서 SSL을 종료하고 X-전달 - 프로토 HTTP 헤더

에서 엔진 야드 문서을 따라 우리를 잘 작동 가능하게 나타나 SSL을 사용합니다. 대신 서버에서 ELB로 종료됩니다. 이론적으로 이는 단일 환경에서 여러 SSL 인증서를 사용할 수 있어야합니다.

이 설정은 브라우저와 ELB로드 밸런서 간의 트래픽이 SSL이지만 ELB에서 응용 프로그램 서버로의 트래픽이 해독됨을 의미합니다. 이로 인해 우리는 레일 3.2.8 애플리케이션 강제 SSL의 문제를 일으켰습니다. 해독 된 모든 요청을 https와 동일한 방향으로 리디렉션합니다. 해독 된 요청을로드 밸런서에서 애플리케이션 서버로 다시 보내고 무한 루프 상태가 발생합니다.

우리 앱에서 SSL을 강제 실행하지 못하게하는 경우 각 요청을 테스트하여 SSL 연결에서 제공된 것인지 확인해야합니다. 그렇지 않은 경우 응답 할 수 있습니다. 그렇지 않은 경우 리디렉션 할 수 있습니다.

이 릴리스 노트 (http://aws.amazon.com/releasenotes/7778622769836370)에 따르면 ELB는 트래픽이 https 연결에서 전달 될 때 'https'가 포함 된 X-Forwarded-Proto 헤더를 전달합니다.

먼저 Engine Yard의 요청에 'X-Forwarded-Proto'라는 헤더가 없습니다. 'HTTP_X-FORWARDED_PROTO'는 존재하지만 SSL을 통해 ELB로 트래픽이 전송되는 경우에도 항상 'http'가 포함됩니다.

누구나이 아이디어에 대한 통찰력을 제공하여 해결 방법을 찾을 수 있습니까? 지금까지별로 운이없이 EY 지원을 시도했습니다.

+1

EngineYard에 문의하면 앱에 stunnel 기능 플래그를 사용하도록 설정하여 x-proto-forward를 제 위치에 유지하고 제거하지 않을 수 있습니다. –

답변

4

요청이 ssl을 통해로드 밸런서에 제공된 경우 443 인 X-Forwarded-Port 헤더를 확인할 수 있습니다. 랙 env에서 HTTP_X_FORWARDED_PORT이됩니다.

우리는 Engine Yard Rails 앱에서 this modified rack-ssl 보석을 사용합니다.

+0

오타 :'HTTP_X_FORWARDED_PORT' – devth

+1

오타가 수정되었습니다. 감사합니다. –

관련 문제