Amazon web services AWS ELB未填充x-forwarded-for标头

Amazon web services AWS ELB未填充x-forwarded-for标头,amazon-web-services,amazon-ec2,amazon-elb,Amazon Web Services,Amazon Ec2,Amazon Elb,我们使用的是Amazon弹性负载平衡器,背后有2台apache服务器。 但是,我们无法在应用程序端获得X-Forwarded-Header 我读了一篇类似的帖子,但找不到解决办法 这是ELB侦听器的配置方式 HTTP 80 HTTP 80 N/A N/A TCP 443 TCP 443 N/A N/A 是否应将443端口更改为HTTPS(安全HTTP)而不是TCP来填充标头 其他选项包括SSl(安全TCP) 如果这样做行得通,我还想知道为什么以及区别是什么Amazon现在支持

我们使用的是Amazon弹性负载平衡器,背后有2台apache服务器。 但是,我们无法在应用程序端获得X-Forwarded-Header

我读了一篇类似的帖子,但找不到解决办法

这是ELB侦听器的配置方式

HTTP 80  HTTP   80  N/A N/A
TCP  443 TCP    443 N/A N/A
是否应将443端口更改为HTTPS(安全HTTP)而不是TCP来填充标头 其他选项包括SSl(安全TCP)


如果这样做行得通,我还想知道为什么以及区别是什么

Amazon现在支持使用tcp报头传递源代码,如本文所述

Apache不支持本地的时间支持。如果您阅读了这些评论,那么有一些源代码补丁允许apache处理它,或者您可以切换到nginx。

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

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

然后我重新启动了apache服务和Woala! 下面是虚拟主机配置,您需要为您的子域执行相同的操作,例如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>

重新启动发动机
重写cond%{HTTP:X-Forwarded-Proto}=https
重写规则^/(.*)$https://%{SERVER_NAME}/$1[R=301,L]
服务器管理员webmaster@yourdomain.com
DocumentRoot“/apache2/htdocs/YourDomainFolderWeb”
ServerName yourdomain.com
ErrorLog“logs/yourdomain.com-error\u log”
CustomLog“logs/yourdomain.com-access\u log”通用
希望它能起作用。 更多信息,请访问:


最好

您链接的问题有您问题的答案。TCP负载平衡器在第4层左右运行,既没有协议意识,也没有能力操纵负载以添加HTTP头。HTTP(S)负载平衡器在第7层运行,能够操纵有效负载以添加标头。可能与@Michael-sqlbot重复-感谢您的解释
<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>