Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带有Apache web和Tomcat SSL问题的F5负载平衡器_Apache_Tomcat_Ssl_F5 - Fatal编程技术网

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

带有Apache web和Tomcat SSL问题的F5负载平衡器,apache,tomcat,ssl,f5,Apache,Tomcat,Ssl,F5,我们有一个web应用程序托管在Tomcat服务器(集群)上,两个Apache web服务器位于前面,F5 load balance5位于Apache前面。SSL在F5负载平衡器中配置。现在,每当有人使用负载平衡器的安全url访问我们的应用程序时,我们的java web应用程序都不会将request.isSecure评估为true。是否需要进行任何设置才能启用此功能 在我们的ApacheWeb服务器中,我们使用代理平衡器进行了以下配置 ServerName ip:80 ProxyPass /ba

我们有一个web应用程序托管在Tomcat服务器(集群)上,两个Apache web服务器位于前面,F5 load balance5位于Apache前面。SSL在F5负载平衡器中配置。现在,每当有人使用负载平衡器的安全url访问我们的应用程序时,我们的java web应用程序都不会将request.isSecure评估为true。是否需要进行任何设置才能启用此功能

在我们的ApacheWeb服务器中,我们使用代理平衡器进行了以下配置

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>
ServerName ip:80
ProxyPass/平衡器管理器!
ProxyPass/balancer://mycluster/ stickysession=JSSessionId nofailover=Off
ProxyPassReverse/balancer://mycluster/
平衡员ajp://ipapp1:8009 路线=jvm1装载系数=1
平衡员ajp://ipapp2:8009 路线=jvm2装载系数=1状态=+H
ProxySet lbmethod=byrequests
我试图通过为8080添加scheme=“https”、secure=“true”和proxyPort=“443”来更改tomcat的server.xml中的连接器详细信息,但没有成功


我在这里遗漏了什么?

您需要检查您的应用程序是否受支持,但通常会转发一个标头来传达请求协议。传统上这是X-Forwarded-Proto报头,但X-。。。命名法已被弃用。转发头现在支持X-Forwarded-For、X-Forwarded-Proto等。。。在一个标题中。然而,对于不推荐使用的方法,仍然有广泛的支持,因此任何一种方法都应该在应用程序支持期间起作用

X-Forwarded-Proto: https


新标准在

中有描述,也许我在这里有点晚了,但我也遇到了同样的情况。我补充说

scheme=“https”、secure=“true”和proxyPort=“443”

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

我尝试了这个配置,它成功了,通过Apache前面的负载平衡器发送的请求正确地报告了https中的tomcat webapp


我希望这能帮助那些有同样问题的人,我花了好几天才明白这一点。

如果你在BIG-IP上终止SSL,为什么你要在它背后的web服务器上验证加密?您正在发送一个未加密的连接,因此它应该验证为不安全。如果您不担心性能,请桥接SSL连接,并使用服务器SSL配置文件从BIG-IP重新加密到web服务器,以满足这一要求。否则,您将需要在BIG-IP中编写某种iRule,以通知web服务器连接之前已加密,并让您的应用程序验证该字符串。实际上,我们正在使用openSAML进行SSO。我们得到的是“saml端点url不匹配错误”,因为端点url具有https,而在应用程序服务器(tomcat)中,当我们尝试获取请求协议时,显然我们得到的是http,因为https终止于负载平衡器。所以我试图探索如何让tomcat意识到使用https的可能性。
Forwarded: proto=https