AWS ELB未填充x-forwarded-for标头

时间:2014-10-29 20:39:56

标签: amazon-web-services amazon-ec2 amazon-elb

我们正在使用Amazon Elastic Load Balancer并且后面有2个apache服务器。 但是,我们无法在应用程序端获得X-Forwarded-Headers

我读过类似的帖子,但找不到解决方案

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 个答案:

答案 0 :(得分:3)

亚马逊现在支持使用tcp标头传递源,如article中所述。

Apache本身不支持proxy protocol。如果您阅读注释,则有源补丁允许apache处理它,或者您可以切换到nginx。

答案 1 :(得分:1)

我有同样的要求。 我有一个AWS Load Balancer指向端口80上的Web服务器。 所有HTTPS请求都使用AWS SSL证书解析,但我的客户端也要求我将所有80端口请求重定向到HTTPS。

我使用Apache服务器,因此我需要将以下行添加到虚拟主机配置文件(httpd.conf)

qlua

然后我重新启动了apache服务和Woala! 以下是虚拟主机配置,您需要对子域进行相同的操作,例如www.yourdomain.com

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

希望它有效。 更多信息: https://aws.amazon.com/premiumsupport/knowledge-center/redirect-http-https-elb/

最佳