繁体   English   中英

带有 Apache Web 和 Tomcat SSL 问题的 F5 负载平衡器

[英]F5 load balancer with Apache web and Tomcat SSL Issue

我们有一个 Web 应用程序托管在 Tomcat 服务器(集群)上,两个 Apache Web 服务器位于前面,F5 负载均衡 5 位于 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>

我试图通过为 8080 添加scheme="https",secure="true" 和 proxyPort="443"来更改 tomcat 的 server.xml 中的连接器详细信息,但它不起作用。

我在这里缺少什么?

您需要检查您的应用程序以查看它是否受支持,但通常会转发标头以传达请求协议。 传统上这是 X-Forwarded-Proto 标头,但 X-... 命名法已被弃用。 Forwarded 标头现在在一个标头中支持 X-Forwarded-For、X-Forwarded-Proto 等。 但是,仍然广泛支持已弃用的方法,因此任何一种方法都应在等待应用程序支持的情况下工作。

X-Forwarded-Proto: https

或者

Forwarded: proto=https

新标准在RFC 7239中描述

也许我在这里有点晚了,但我遇到了同样的情况。 我加了

scheme="https", secure="true" 和 proxyPort="443"

端口 8009 上,而不是像原始问题那样在端口 8080 上。 那是因为来自 Apache 的请求是通过端口 8009 上的 AJP 发出的。此外,Apache 必须从http.conf启用http-ssl.conf并且它必须在端口 443 上侦听。

我尝试了这个配置并且它起作用了,通过Apache前面的负载均衡器发送的请求正确报告了https中的tomcat webapp。

我希望这对有同样问题的人有所帮助,我花了几天时间才明​​白这一点。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM