Man*_*noj 14 java apache ssl ssl-certificate http-headers
任何人都可以指导我在Java apache-tomcat中使用X-FORWARDED-PROTO.
应用程序设置是这样的,tomcat与apache webserver进行对话,后者又与Cisco LoadBalancer进行对话,最后平衡器将页面发布到客户端(tomcat - > apache2 - > load balancer - > client).
SSL证书安装在LoadBalancer及其处理https请求中.我的要求是使应用程序的行为方式使其使用X-FORWARDED-PROTO并将页面更改为HTTP或HTTPS.
检查我的网页的头文件我找不到X-FORWARDED-PROTO参数.我也无法访问LoadBalancer配置,IT建议我们使用X-FORWARDED-PROTO来区分HTTP和HTTPS请求.
是否有任何配置要在tomcat或apache级别完成,以便它将返回X-FORWARDED-PROTO参数.或者是应该在LoadBalancer中处理配置.
小智 25
我很确定你现在已经弄明白了但是我会补充答案.
您可以在tomcat的conf/server.xml中的引擎标记中使用类org.apache.catalina.valves.RemoteIpValve.
<Valve className="org.apache.catalina.valves.RemoteIpValve"
internalProxies="192.168.1.XXX"
remoteIpHeader="x-forwarded-for"
remoteIpProxiesHeader="x-forwarded-by"
protocolHeader="x-forwarded-proto"
/>
Run Code Online (Sandbox Code Playgroud)
需要注意的是非常重要的是设置internalProxies值.如果未设置此选项并且您使用的是非标准网络设置,则可能会导致某些问题,即tomcat不会检查x-forwarded标头,并且默认为"http".出于安全原因,我建议即使它使用默认值也可以设置它.
看这里了解更多信息.
将其添加到您的 apache vhost 管理连接中
\n\n<VirtualHost *:80>\n ...\n RewriteEngine On\n RewriteCond %{HTTP:X-Forwarded-Proto} !https\n RewriteRule !/status https://%{SERVER_NAME}%{REQUEST_URI} [L,R]\n</VirtualHost>\n
Run Code Online (Sandbox Code Playgroud)\n\n这假设您的健康检查是 /status,这不需要 https\xe2\x80\x99t
\n 归档时间: |
|
查看次数: |
23447 次 |
最近记录: |