请问有人能指导我在Java Web应用程序中使用X-FORWARDED-PROTO头部信息的处理方法吗?
应用程序的设置是这样的:Tomcat与Apache Web服务器通信,后者再与Cisco负载均衡器通信,最终由负载均衡器将页面发布给客户端(tomcat -> apache2 -> 负载均衡器 -> 客户端)。
SSL证书已安装在负载均衡器上,它处理HTTPS请求。我的要求是使应用程序使用X-FORWARDED-PROTO并将页面更改为HTTP或HTTPS。
检查我的网页的头文件时,我找不到X-FORWARDED-PROTO头部信息。我也无法访问负载均衡器配置,IT建议我们使用X-FORWARDED-PROTO来区分HTTP和HTTPS请求。
在Tomcat或Apache级别上需要进行配置以返回X-FORWARDED-PROTO头部信息吗?还是配置应该在负载均衡器中处理?
protocolHeader="X-Forwarded-Proto"
(根据您的设置可能还需要internalProxies
)。其余部分都具有默认值,在大多数情况下应该是可以的。具体来说,IP已经被重写了(因此不需要remoteIpHeader
和remoteIpProxiesHeader
)。 - Nuxhttps://site:8888
,将这个设置添加到我的 server.xml 中解决了它转发到http://site:8888/login
的问题。现在它在 URL 中正确地转发到 https。然而,它失去了端口。所以https://site:8888
变成了https://site/login
...你如何保留端口呢? - user1667016