Назад | Перейти на главную страницу

Обратный прокси-сервер Apache от одного виртуального хоста к двум Tomcats

Есть ли у кого-нибудь советы или примеры того, как настроить такой тип обратного прокси-сервера на 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>