簡體   English   中英

Engine Yard Rails app - 在Elastic Load Balancer(ELB)上終止SSL並傳遞X-Forwarded-Proto http頭

[英]Engine Yard Rails app - Terminating SSL at an Elastic Load Balancer (ELB) and passing X-Forwarded-Proto http header

https://support.cloud.engineyard.com/entries/21715452-use-elastic-load-balancing-with-engine-yard-cloud上關注 Engine Yard文檔

得到了這個設置並且似乎運行良好,允許我們在ELB上使用SSL Terminated而不是服務器。 理論上,這應該允許我們在單個環境中使用多個SSL證書。

此設置意味着瀏覽器和ELB負載平衡器之間的流量是SSL,但是從ELB到應用程序服務器的轉發流量將被解密。 這導致我們的rails 3.2.8應用程序強制SSL出現問題 - 它將每個解密的請求重定向回其https等效項,后者再次從負載均衡器向應用程序服務器發送解密請求,從而導致無限循環條件。

如果我們在我們的應用程序中禁用強制SSL,我們需要測試每個請求以查看它是否來自SSL連接,如果它確實我們可以響應,如果沒有,則重定向它。

根據此發行說明( http://aws.amazon.com/releasenotes/7778622769836370 ),當從https連接傳遞流量時,ELB將傳遞包含“https”的X-Forwarded-Proto標頭。

首先,在Engine Yard的請求中沒有名為“X-Forwarded-Proto”的標題。 “HTTP_X-FORWARDED_PROTO”確實存在,但即使通過SSL將流量發送到ELB,它也始終包含“http”。

任何人都可以提供任何洞察力或解決方法的想法嗎? 到目前為止,我已經嘗試了沒有太多運氣的安永支持。

您可以檢查X-Forwarded-Port標頭,如果請求通過ssl發送到負載均衡器,則為443。 這將是機架HTTP_X_FORWARDED_PORT中的HTTP_X_FORWARDED_PORT

我們在Engine Yard Rails應用程序中使用這個經過修改的rack-ssl gem作為解決方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM