У меня есть сервер Apache 2.4.18 на centos в качестве веб-сервера во внешнем интерфейсе. Теперь у меня есть несколько веб-сайтов, которые развернуты на Tomcat 8.0.33 как веб-приложения в папке веб-приложений по умолчанию в Tomcat.
Конфигурация на конце apache:
<VirtualHost 1.2.3.4:80>
ServerName abc.com
ServerAlias www.abc.com
ProxyPass / http://localhost:8079/abc/
ProxyPassReverse / http://localhost:8079/abc/
</VirtualHost>
<VirtualHost 1.2.3.4:80>
ServerName def.com
ServerAlias www.def.com
ProxyPass / http://localhost:8079/def/
ProxyPassReverse / http://localhost:8079/def/
</VirtualHost>
Два файла .war с именами abc.war и def.war развертываются в папке tomcat webapps.
abc.com работает абсолютно нормально, так как это всего лишь html-сайт.
но def.com - это динамический сайт, и на его домашней странице есть форма входа. На домашней странице после успешного входа в систему должна быть загружена страница профиля пользователя: URL страницы входа -> страница профиля пользователя def.com -> def.com/profile.htm
Обратите внимание, что домашняя страница успешно загружается (означает, что GET выполняется успешно) в браузере, но когда пользователь пытается войти в систему (что является запросом POST), он каким-то образом пытается загрузить: def.com/def/profile.htm
Также обратите внимание, что если я изменю конфигурацию на:
<VirtualHost 1.2.3.4:80>
ServerName def.com
ServerAlias www.def.com
ProxyPass /def/ http://localhost:8079/def/
ProxyPassReverse /def/ http://localhost:8079/def/
</VirtualHost>
то я могу успешно открыть def.com/def/, и я также могу успешно войти в систему и открыть def.com/profile.htm, но я хочу, чтобы моя домашняя страница была на def.com
Скорее всего, вам понадобится дополнительная директива для страницы def, поскольку вы упомянули, что есть страница входа и, возможно, файлы cookie, проверьте, как они установлены на бэкэнде.
Думаю, вам может понадобиться что-то вроде:
ProxyPassReverseCookiePath / /def/
и, возможно, что-то подобное с ProxyPassReverseCookieDomain
.
Обзор mod_proxy документы если бы не все варианты, которые у вас есть
Это интересная тема, поэтому, если это не ваше решение, я был бы признателен, если вы добавите свой ответ, как только вы его решите.