У меня есть 3 машины, которые я настраиваю таким образом для работы.
MachineA(https) -> MachineB(обратный прокси) -> MachineC(Приложение)
MachineA - Общедоступный балансировщик нагрузки, на котором установлен SSL-сертификат MachineB - HTTP-сервер Apache, на который будет перенаправлен запрос от MachineA и перенаправлен на сервер приложений с помощью mod_wls MachineC - Сервер приложений Weblogic, на котором развернуто приложение
Я настроил свой MachineB http config следующим образом:
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.
Моя конфигурация MachineB правильно справиться с этим?
Вы смешиваете директивы proxypass, принадлежащие mod_proxy, с директивами, принадлежащими плагину 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>