我们使用的是Amazon Elastic Load Balancer,背后有2个apache服务器。但是,我们无法在应用程序端获得X-Forwarded-Header
我读了一篇类似的文章,但找不到解决方案
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)
如果这样做有效,我也想知道为什么会有不同,以及是什么造成了不同。
发布于 2015-02-07 05:44:15
亚马逊现在支持使用tcp报头来传递源代码,如本article中所述。
作为时间,Apache本身并不支持proxy protocol。如果你阅读了评论,有一些源代码补丁可以让apache来处理它,或者你可以切换到nginx。
发布于 2016-10-26 18:59:35
我也有同样的要求。我有一个AWS负载均衡器指向端口80上的the服务器。所有HTTPS请求都使用AWS SSL证书进行解析,但我的客户还要求我将所有80端口请求重定向到HTTPS。
我使用的是Apache服务器,因此需要向Virtual Host配置文件(httpd.conf)添加以下行
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !=https
RewriteRule ^/(.*)$ https://%{SERVER_NAME}/$1 [R=301,L]然后我重新启动了apache服务,然后哇啦!下面是虚拟主机配置,您需要对您的子域执行相同的配置,例如www.yourdomain.com
<VirtualHost *:80>
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !=https
RewriteRule ^/(.*)$ https://%{SERVER_NAME}/$1 [R=301,L]
ServerAdmin webmaster@yourdomain.com
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/
最好的
https://stackoverflow.com/questions/26640245
复制相似问题