6

Obserwowani docs Silnik Yard w https://support.cloud.engineyard.com/entries/21715452-use-elastic-load-balancing-with-engine-yard-cloudsilnika Yard Szyny app - Zakończenie SSL na elastycznej równoważenia obciążenia (ELB) i przechodzącej X-Przekazano-Proto nagłówek HTTP

got to skonfigurować i wydaje się pracować dobrze pozwala nam korzystaj z SSL zakończone w ELB zamiast na serwerze. Teoretycznie powinno to pozwolić nam używać wielu certyfikatów SSL w jednym środowisku.

Ta konfiguracja oznacza, że ​​ruch między przeglądarką a układem równoważenia obciążenia ELB odbywa się za pomocą protokołu SSL, ale dalszy ruch z ELB do serwerów aplikacji jest odszyfrowywany. To spowodowało, że problem z naszą aplikacją w przeglądarce Railsowej 3.2.8 wymuszał SSL - przekierowuje każde odszyfrowane żądanie z powrotem do jego odpowiednika https, co odsyła odszyfrowane żądanie z modułu równoważenia obciążenia do serwera aplikacji, powodując nieskończoną pętlę.

Jeśli wyłączymy wymuszanie protokołu SSL w naszej aplikacji, musimy przetestować każde żądanie, aby sprawdzić, czy pochodzi ono z połączenia SSL, a jeśli tak, możemy odpowiedzieć, jeśli nie, przekierować.

Zgodnie z tą informacją o wersji (http://aws.amazon.com/releasenotes/7778622769836370) ELB przekaże nagłówek X-Forwarded-Proto zawierający "https", gdy ruch zostanie przekazany z połączenia https.

Po pierwsze nie ma nagłówka o nazwie "X-Forwarded-Proto" w żądaniu na Engine Yard. "HTTP_X-FORWARDED_PROTO" istnieje, ale zawsze zawiera "http", nawet gdy ruch jest przesyłany przez SSL do ELB.

Czy ktokolwiek może zaoferować wgląd w to lub pomysły na obejście tego problemu? Próbowałem wsparcia EY bez powodzenia do tej pory.

+1

Jeśli skontaktujesz się z EngineYard, mogą włączyć flagę funkcji stunnel dla twojej aplikacji, która będzie utrzymywać x-proto-forward na miejscu i nie będzie go rozbierać. –

Odpowiedz

4

Możesz sprawdzić nagłówek X-Forwarded-Port, który jest 443, jeśli żądanie dotarło do modułu równoważenia obciążenia przez ssl. To będzie HTTP_X_FORWARDED_PORT w regale szafowym.

Używamy klejnotu this modified rack-ssl w naszej aplikacji Engine Yard Rails jako obejście tego problemu.

+0

Typo: 'HTTP_X_FORWARDED_PORT' – devth

+1

Naprawiono literówkę, dzięki –

Powiązane problemy