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

Перенаправление Apache httpd.conf. Как «сбалансировать» приложение

Вероятно, это простая проблема, но я просто не могу ее решить! У меня есть веб-сайт с двумя Apache Tomcats на разных портах (например, 8080, 8085). Однако, поскольку мои клиенты не могут получить доступ к определенным портам (их брандмауэры предотвращают это), они могут получить доступ к моей машине только через порт 80.

Итак, у меня заработали следующие редиректы:

aServer.com/App1 redirects to aServer.com:8080/App1
aServer.com/App2 redirects to aServer.com:8085/App2

используя следующий файл httpd.conf:

<VirtualHost *:80>
    ProxyPass        /App1 http://<server ip address>:8080/App1
    ProxyPassReverse /App1 http://<server ip address>:8080/App1
    ProxyPass        /App2 http://<server ip address>:8085/App2
    ProxyPassReverse /App2 http://<server ip address>:8085/App2
</VirtualHost>

Однако, если я хочу развернуть приложение как веб-приложение ROOT в Tomcat, я не могу заставить перенаправление работать должным образом. Я изменил httpd.conf на:

    ProxyPass        /App2 http://<server ip address>:8085
    ProxyPassReverse /App2 http://<server ip address>:8085

и теперь возвращается только страница index.html, и каждая зависимость от веб-страницы (например, tomcat.css, tomcat.png) приводит к ошибке not found ( NetworkError: 404 Not Found - http://myServer/tomcat.css)

Может кто-нибудь объяснить, что я делаю не так?

Спасибо,

Фил

Если ваше приложение явно не поддерживает прокси, вам обычно требуется сопоставить путь прокси с путем контекста.

http://myserver/tomcat.css это запрос, который будет пытаться выполнить в корне вашего документа Apache, поскольку / не передается Tomcat через прокси. Вам нужно будет выполнить одно из следующих действий (варианты от безопасного до ленивого):

  • прокси-сервер Apache в корневой каталог Tomcat,
    Если вы не собираетесь запускать оба приложения в одном контейнере, убедитесь, что вы разместили директивы ProxyPass в правильном порядке.

  • изменить оригинал index.html страницу в Tomcat, чтобы учесть изменение пути, вызванное прокси,
    Вам придется повторять это каждый раз при повторном развертывании.

  • обеспечить перезапись для ВСЕХ ресурсов проксируемого пути
    Вам придется повторять это каждый раз, когда повторное развертывание изменяет требуемые ресурсы.