gpt4 book ai didi

tomcat - apache mod_proxy url 不起作用,除非/附加

转载 作者:行者123 更新时间:2023-11-28 23:19:06 24 4
gpt4 key购买 nike

我有 apache 2.4 设置和 mod_proxy 负载平衡 2 tomcats。这是对 httpd.conf 的补充

ProxyRequests Off
ProxyPass /APP balancer://mycluster stickysession=JSESSIONID|jsessionid
ProxyPassReverse /APP balancer://mycluster
<Proxy balancer://mycluster>
BalancerMember http://TOMCAT1:8080/APP route=TOMCAT1
BalancerMember http://TOMCAT2:8080/APP route=TOMCAT2
</Proxy>
<Location /balancer-manager>
SetHandler balancer-manager
Require all granted
</Location>
ProxyPass /balancer-manager !
<Location /server-status>
SetHandler server-status
Require host localhost
Require all granted
</Location>

如果我在浏览器中尝试“http://localhost:7000/APP”,它不起作用。但是,如果我使用“http://localhost:7000/APP/”,应用程序就会出现。

请注意附加的“/”和网址结尾。如何避免这种额外的/?

更新工作结构:

ProxyRequests Off
ProxyPass /APP balancer://mycluster/APP stickysession=JSESSIONID|jsessionid
ProxyPassReverse /APP balancer://mycluster/APP
<Proxy balancer://mycluster>
BalancerMember http://TOMCAT1:8080 route=TOMCAT1
BalancerMember http://TOMCAT2:8080 route=TOMCAT2
</Proxy>
<Location /balancer-manager>
SetHandler balancer-manager
Require all granted
</Location>
ProxyPass /balancer-manager !
<Location /server-status>
SetHandler server-status
Require all granted
</Location>

最佳答案

您的平衡器定义有误。在平衡器定义中,您只需定义节点,而不是它们处理的 uri。

**Incorrect:**
BalancerMember http://TOMCAT1:8080/APP

***Correct:***
BalancerMember http://TOMCAT1:8080

然后您在 ProxyPass 中处理 uri 路径

ProxyPass /app/ balancer://mycluster/app/


您还可以使用:

ProxyPass /app balancer://mycluster/app

注意:balancer://mycluster 与 balancer://mycluster/相同。您应该遵循一条规则来避免出现以下问题:如果源有尾部斜线,目标也应该有尾部斜线,这样可以避免后端响应中的路径不匹配。

注意 2:您的 <Location /server-status>有两个 Require 语句,因为默认是 Require any,所有都将被允许,因为你有一个 Require all granted,所以在那个上下文中定义一个 Require host localhost 是没有意义的。

关于tomcat - apache mod_proxy url 不起作用,除非/附加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45888689/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com