我们正在使用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)
如果这样有效,我也想知道为什么以及有什么区别
答案 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/
最佳