我们使用的是Amazon弹性负载平衡器,背后有2台apache服务器。但是,我们无法在应用程序端获取X-Forwarded-Headers
我读了一篇类似的文章,但找不到解决办法
Amazon弹性负载平衡器未填充x-forwarded-proto标头
这是ELB侦听器的配置方式
HTTP 80 HTTP 80 N/A N/A
TCP 443 TCP 443 N/A N/A
是否应该将443端口更改为HTTPS(安全HTTP)而不是TCP填充标头其他选项是SSl(安全TCP)
如果这样做有效,我也想知道为什么会这样,以及为什么会有不同
我也有同样的要求。我有一个AWS负载平衡器,它指向端口80上的Web服务器。所有HTTPS请求都使用AWS SSL证书进行解析,但我的客户端要求我将所有80端口请求重定向到HTTPS。
我使用的是Apache服务器,因此需要在虚拟主机配置文件(httpd.conf)中添加以下行
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !=https
RewriteRule ^/(.*)$ https://%{SERVER_NAME}/$1 [R=301,L]
然后我重新启动了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>
希望它能起作用。更多信息,请访问:https://aws.amazon.com/premiumsupport/knowledge-center/redirect-http-https-elb/
最好的
Amazon现在支持使用tcp标头来传递源,如本文所述。
Apache不支持本地代理协议。如果您阅读评论,有源补丁允许apache处理它,或者您可以切换到nginx。
的X-Forwarded-For(XFF)报头是用于通过 HTTP 代理或负载平衡器识别连接到 web 服务器的客户端的发起 IP 地址的事实上的标准报头。当客户端和服务器之间的流量被拦截时,服务器访问日志仅包含代理或负载均衡器的IP地址。要查看客户端的原始 IP 地址,X-Forwarded-For请使用请求标头。 此标题用于调试,统计和生成依赖于位置的内容,并且通过设计它可以显示隐私敏感信息,
X-Forwarded-Proto(XFP)报头是用于识别协议(HTTP 或 HTTPS),其中使用的客户端连接到代理或负载平衡器一个事实上的标准报头。您的服务器访问日志包含在服务器和负载平衡器之间使用的协议,但不包括客户端和负载平衡器之间使用的协议。要确定客户端和负载平衡器之间使用的协议,X-Forwarded-Proto可以使用请求标头。 此标头的标准化版本是 HTTP Forwarded标头
X-Forwarded-Host(XFH)报头是用于识别由客户机在所要求的原始主机一个事实上的标准报头Host的 HTTP 请求报头。 反向代理(负载均衡器,CDN)的主机名称和端口可能与处理请求的源服务器不同,在这种情况下,X-Forwarded-Host头部可用于确定最初使用哪个主机。 此标题用于调试,统计和生成依赖于位置的内容,并且通过设计它可以显示隐私敏感信息,例如客户端的 IP 地址。因
我有一个非常简单的Java/Spring应用程序来演示KStream的功能,但不幸的是,我无法使KStream加载数据。想法是创建一个KStream对象,并使用controller GET方法简单地检索其内容。示例代码: 问题-主题中有消息,但foreach(...)中的KStream枚举没有从中检索任何结果。KStream对象状态为“RUNning”,日志中没有错误。 生成随机应用程序ID并将A
问题内容: 我目前正在尝试从用C#编写的WPF应用程序中的数据库中检索记录。我正在使用SQL数据读取器,它似乎可以正常连接,但以下内容给了我NullReferenceException: 同样,我似乎正在连接到数据库,但是如果我通过调试器运行,则数据表似乎不会被填充。 我的连接字符串,以防万一: 我当前使用的是带有两个记录的测试数据库,而不是最终数据库。我尝试使用Transact-SQL编辑器,但
//控制器类Mainguicontroller.java