2014-10-29 135 views
3

我們正在使用Amazon Elastic Load Balancer,並在其後面有2個apache服務器。 但是,我們是不是能夠得到的X轉發,頭在應用程序端AWS ELB未填充x-forwarded-for標頭

我讀了類似的帖子,但無法找到解決它

Amazon Elastic load balancer is not populating x-forwarded-proto header

這是怎麼ELB聽衆被配置

HTTP 80 HTTP 80 N/A N/A 
TCP 443 TCP 443 N/A N/A 

應該改變443端口HTTPS(安全HTTP)而不是TCP填充頭 其他選項是SSL(安全TCP)

如果一切正常,我也想知道爲什麼,是什麼讓區別

+2

問題您鏈接到有回答你的問題。 TCP負載平衡器在第4層左右運行,既沒有協議感知,也沒有操縱負載的能力以添加HTTP標頭。 HTTP(S)負載均衡器在第7層操作,並且能夠操縱負載以添加標頭。 – 2014-10-30 01:12:48

+0

[Amazon Elastic Load Balancer未填充x -forward-proto頭]的可能重複(http://stackoverflow.com/questions/19049320/amazon-elastic-load-balancer-is-not-populating-x-forwarded-原始標題) – 2014-10-30 01:13:20

+0

@Michael - sqlbot - 感謝您的解釋 – naveen 2014-10-30 15:48:03

回答

3

亞馬遜現在支持使用TCP報頭傳遞沿如本article討論的來源。

Apache本身不支持proxy protocol。如果你閱讀了評論,那麼有補丁可以讓apache處理它,或者你可以切換到nginx。

1

我有同樣的要求。 我有一個AWS負載平衡器指向端口80上的Web服務器。 所有HTTPS請求都使用AWS SSL證書解析,但我的客戶端還要求我將所有80端口請求重定向到HTTPS。

我使用的是Apache服務器,所以我需要以下幾行添加到

RewriteEngine On 
RewriteCond %{HTTP:X-Forwarded-Proto} !=https 
RewriteRule ^/(.*)$ https://%{SERVER_NAME}/$1 [R=301,L] 

然後我重新啓動Apache服務和Woala虛擬主機配置文件(httpd.conf文件)! 下面是虛擬主機的配置,你需要爲你的子域做同樣的,例如www.yourdomain.com

<VirtualHost *:80> 
    RewriteEngine On 
    RewriteCond %{HTTP:X-Forwarded-Proto} !=https 
    RewriteRule ^/(.*)$ https://%{SERVER_NAME}/$1 [R=301,L] 
    ServerAdmin [email protected] 
    DocumentRoot "/apache2/htdocs/YourDomainFolderWeb" 
    ServerName yourdomain.com 
    ErrorLog "logs/yourdomain.com-error_log" 
    CustomLog "logs/yourdomain.com-access_log" common 
</VirtualHost> 

希望工程。 的更多信息: https://aws.amazon.com/premiumsupport/knowledge-center/redirect-http-https-elb/

最佳