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

Ошибка POST Apache httpd mod_proxy на домашней странице, например abc.com

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

Это интересная тема, поэтому, если это не ваше решение, я был бы признателен, если вы добавите свой ответ, как только вы его решите.