Есть ли у кого-нибудь советы или примеры того, как настроить такой тип обратного прокси-сервера на Apache Http Server 2.2? Я поддерживаю веб-приложение Java, которое мы разрабатываем в нескольких средах. Под несколькими средами я имею в виду, что у нас есть несколько экземпляров сервера Tomcat, работающих на одном хосте и на разных портах: development = 9443, QA = 10443, production = 11443
Веб-приложения Java разработаны таким образом, что вы можете размещать несколько приложений на одном сервере: каждое приложение может быть доступно в своем собственном корневом контексте. Если вы не знакомы с этой технологией, это означает, что все страницы моего приложения находятся за / myapp в https://myhost.mydomain.com/myapp
.
Веб-приложения Java также требуют использования файлов cookie для поддержания состояния сеанса, поэтому любое решение для обратного проксирования должно гарантировать, что проксируемое имя хоста транслируется обратно во внешнее имя хоста.
В настоящее время у нас есть рабочий экземпляр Tomcat, доступный в Интернет через обратный прокси-сервер Apache, который прокси https://public.mydomain.com/myapp
к https://tomcatserver.mydomain.com:11443/myapp
. Мы хотели бы открыть экземпляр QA Tomcat для Интернета, чтобы бета-тестеры могли получить к нему доступ, но https://publicserver.mydomain.com/myapp
URL-адрес уже настроен для запуска в производство. Итак, мы пытаемся настроить второй прокси, который отображает https://publicserver.mydomain.com/beta
к https://tomcatserver.mydomain.com:10443/myapp
.
Вот что я пробовал до сих пор, но не работает. Оба адреса (/ myapp и / beta) всегда попадают в рабочий экземпляр Tomcat.
<VirtualHost *:443>
ServerAdmin admins@mydomain.com
ServerName public.mydomain.com
ServerAlias public
# Proxy to production environment on tomcatserver
ProxyPass /myapp/ https://tomcatserver.mydomain.com:11443/myapp/
ProxyPassReverse /myapp/ https://tomcatserver.mydomain.com:11443/myapp/
<location /myapp/>
SSLRequireSSL On
SetOutputFilter proxy-html
ProxyPassReverseCookieDomain tomcatserver.mydomain.com public.mydomain.com
ProxyPassReverseCookiePath / /myapp/
ProxyHTMLURLMap /myapp /myapp
</location>
# Proxy to QA environment on tomcatserver
ProxyPass /beta/ https://tomcatserver.mydomain.com:10443/myapp/
ProxyPassReverse /beta/ https://tomcatserver.mydomain.com:10443/myapp/
<location /beta/>
SSLRequireSSL On
SetOutputFilter proxy-html
ProxyPassReverseCookieDomain tomcatserver.mydomain.com public.mydomain.com
ProxyPassReverseCookiePath / /myapp/
ProxyHTMLURLMap /beta /myapp
</location>
</VirtualHost>