У меня есть приложение, работающее на Tomcat по адресу http://www.example.com:9090/mycontext
. Имя хоста в server.xml
указывает на www.example.com
. у меня нет localhost
больше. Я использую apache для пересылки запросов на tomcat, используя mod_proxy
. Все работает нормально, пока ProxyPath
является /mycontext
. Настройка имени сервера на виртуальном хосте: www.abc.com
и http://www.abc.com/mycontext
работает отлично. Однако я хотел бы проигнорировать контекстный путь и просто использовать http://www.abc.com/
направлять запросы в http://www.example.com:9090/mycontext
. Когда я это делаю, apache показывает мне пустую страницу. Что мне здесь не хватает? Я ничего не менял в server.xml
кроме хоста по умолчанию для www.example.com
.
<VirtualHost *:80>
ServerName www.abc.com
ProxyRequests Off
ProxyPreserveHost On
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass / http://www.example.com:9090/mycontext
ProxyPassReverse / http://www.example.com:9090/mycontext
</VirtualHost>
Спасибо
Соответствующие завершающие слэши важны в mod_proxy.
ProxyPass / http://www.example.com:9090/mycontext
Это потребует запроса к http://www.abc.com/something
и прокси на http://www.example.com:9090/mycontextsomething
- не очень полезно!
Вместо этого попробуйте эту конфигурацию:
ProxyPass / http://www.example.com:9090/mycontext/
ProxyPassReverse / http://www.example.com:9090/mycontext/
Также - если Tomcat ожидает www.example.com
в качестве заголовка хоста, то вы, вероятно, не хотите, чтобы ProxyPreserveHost On
директива.