我有 3 台机器,我正在按此方式配置它们以进行工作。
机器A(https)->机器B(反向代理)->机器C(应用程序)
机器A- 安装了 SSL 证书的面向公众的负载均衡器 机器B- MachineA 的请求将被重定向到 Apache http 服务器,并使用 mod_wls 转发到应用程序服务器 机器C- 部署应用程序的 Weblogic 应用程序服务器
我已经配置了我的机器Bhttp 配置如下:
LoadModule weblogic_module modules/mod_wl.so
RewriteEngine On
RewriteCond %{HTTPS} on
RewriteRule ^$ http://%{HTTP_HOST} [L,R]
<IfModule mod_weblogic.c>
ProxyPreserveHost On
RewriteEngine On
WebLogicCluster wlsrv:7001
Debug ALL
MatchExpression /
DebugConfigInfo ON
WLLogFile /var/log/wlproxy-qa.log
<Location /console>
SetHandler weblogic-handler
ProxyPass http://wlsrv:7001/console
ProxyPassReverse http://wlsrv:7001/console
</Location>
<Location /App1>
SetHandler weblogic-handler
ProxyPass http://wlsrv:7001/App1
ProxyPassReverse http://wlsrv:7001/App1
</Location>
</IfModule>
请求从应用程序访问第一个网页,但此后 URI 无法正确转发并给出 400 错误。
我的配置是机器B如何处理这个问题?
答案1
您正在使用处理程序将属于 mod_proxy 的 proxypass 指令与属于 weblogic 插件的指令混合在一起。
正确的配置如下(调整您的配置):
LoadModule weblogic_module modules/mod_wl.so
<IfModule mod_weblogic.c>
WebLogicCluster wlsrv:7001
Debug ALL
DebugConfigInfo ON
WLLogFile /var/log/wlproxy-qa.log
<Location /console>
SetHandler weblogic-handler
</Location>
<Location /App1>
SetHandler weblogic-handler
</Location>
</IfModule>