我们在Tomcat服务器(集群)上托管了一个Web应用程序,其中两个Apache Web服务器位于前面,而F5负载balance5位于apache之前。 SSL在F5负载均衡器中配置。现在,只要有人使用负载均衡器的安全URL访问我们的应用程序,我们的Java Web应用程序就不会将request.isSecure评估为true。我需要做什么设置来启用它。
在我们的apache Web服务器中,我们使用代理平衡器
进行以下配置ServerName ip:80
ProxyPass /balancer-manager !
ProxyPass / balancer://mycluster/ stickysession=JSESSIONID nofailover=Off
ProxyPassReverse / balancer://mycluster/
<Proxy balancer://mycluster>
BalancerMember ajp://ipapp1:8009 route=jvm1 loadfactor=1
BalancerMember ajp://ipapp2:8009 route=jvm2 loadfactor=1 status=+H
ProxySet lbmethod=byrequests
</Proxy>
我尝试通过添加 scheme =&#34; https&#34;,secure =&#34; true&#34;来更改tomcat server.xml中的连接器详细信息。 and proxyPort =&#34; 443&#34; for 8080但它没有用。
我在这里缺少什么?
答案 0 :(得分:1)
您需要检查您的应用以确定它是否受支持,但通常会转发一个标头来传达请求协议。传统上这是X-Forwarded-Proto标题,但X -...命名法已被弃用。 Forwarded标头现在在一个标题中支持X-Forwarded-For,X-Forwarded-Proto等。但是,对于已弃用的方法仍有广泛的支持,因此任何一种方法都应该适用于应用程序支持。
X-Forwarded-Proto: https
或
Forwarded: proto=https
新标准在RFC 7239
中有所描述答案 1 :(得分:0)
也许我来晚了一点,但我遇到了同样的情况。我加了
<块引用>scheme="https"、secure="true" 和 proxyPort="443"
在端口 8009 上,而不是像原始问题那样在端口 8080 上。那是因为来自 Apache 的请求是通过端口 8009 上的 AJP 发出的。 此外,Apache 必须从 http.conf 启用 http-ssl.conf,并且必须监听端口 443。
我尝试了这个配置并且它起作用了,通过Apache前面的负载均衡器发送的请求正确报告了https中的tomcat webapp。
我希望这对有同样问题的人有所帮助,我花了几天时间才明白这一点。