我正在尝试将 Apache 2.2 代理服务器配置为指向多个 Weblogic 实例。除了小问题,我在所有方面都做得很好。
我可以让它工作:ProxyPass /QA http://IP:PORT/
但我无法让它工作:ProxyPass / http://IP:PORT/
通过访问http://IP:PORT/
我不明白为什么我不能将 ProxyPass 映射到根(/)
我正在尝试将 Apache 2.2 代理服务器配置为指向多个 Weblogic 实例。除了小问题,我在所有方面都做得很好。
我可以让它工作:ProxyPass /QA http://IP:PORT/
但我无法让它工作:ProxyPass / http://IP:PORT/
通过访问http://IP:PORT/
我不明白为什么我不能将 ProxyPass 映射到根(/)
亚历克斯,谢谢你的帮助!
对于其他尝试设置类似环境的人,我已经粘贴了我在下面所做的事情。
ProxyRequests OFF
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule headers_module modules/mod_headers.so
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
Header add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e; path=/" env=BALANCER_ROUTE_CHANGED
<Proxy balancer://cluster>
BalancerMember http://IP:PORT/ route=1
BalancerMember http://IP:PORT/ route=2
ProxySet stickysession=ROUTEID
</Proxy>
<VirtualHost *:80>
ProxyPass / balancer://cluster/
ProxyPassReverse / balancer://cluster/
</VirtualHost>
我相信Apache只是不允许它。这里存在冲突指令的顺序和优先级的潜在问题;如果您收到对 /QA/ 的请求,那么它应该遵循 /QA 匹配还是 / 匹配?我猜您可能正在尝试在同一地址/端口上映射多个托管服务器,而不必识别每个子路径,即单个规则而不是多个规则。与 documentRoot 仍然存在冲突。可以说,如果您在 root 上进行匹配,那么 Apache 层的意义何在 - 一切都直接通过,而 Apache 本身没有提供任何服务。(这并不意味着永远没有正当的理由这样做,但我可以理解为什么 Apache 会这么想)。
我知道这样做的唯一方法是在虚拟主机内(不确定这是否可以在唯一的监听端口上,但我认为是这样):
<VirtualHost *:8080>
ProxyPass / http://IP:PORT/
ProxyPassReverse / http://IP:PORT/
</VirtualHost>
您还可以查看 WebLogic 代理插件:
<Location />
SetHandler weblogic-handler
</Location>
<IfModule mod_weblogic.c>
WebLogicHost IP
WebLogicPort PORT
</IfModule>