Я задавал этот вопрос в нескольких местах и не нашел ответа. Это должен быть довольно простой и довольно распространенной проблемой. К сожалению, я ничего не знаю о tomcat и mod_proxy, поэтому не могу понять этого.
У меня есть несколько приложений, работающих в Tomcat, установленных как войны, и я могу получить к ним доступ по адресу myserver.com:8080/myapp
Я просто хочу создать виртуальный хост apache, который пересылает myapp.myserver.com к этому myserver.com:8080/myapp используя mod_proxy.
Хадсон - прекрасный пример, здесь нет лишней конфигурации, только развернутая война. Итак, я установил следующий apache vhost:
<VirtualHost *:80>
ServerName hudson.myserver.ca
ProxyPreserveHost On
ProxyPass / http://localhost:8080/hudson
ProxyPassReverse / http://localhost:8080/hudson
</VirtualHost>
а мой proxy.conf:
<IfModule mod_proxy.c>
ProxyRequests Off
<Proxy *>
AddDefaultCharset off
Order deny,allow
Allow from all
</Proxy>
# Enable/disable the handling of HTTP/1.1 "Via:" headers.
# ("Full" adds the server version; "Block" removes all outgoing Via: headers)
# Set to one of: Off | On | Full | Block
ProxyVia On
</IfModule>
Каждый запрос в каждом приложении ведет себя одинаково. Я захожу, например, на hudson.myserver.ca, и он по какой-то причине пересылается на hudson.myserver.ca/hudson, который дает tomcat 404, который говорит
The requested resource (/hudsonhudson/) is not available.
происходит для hudson, jira, confluence и любого другого приложения.
Что с лишним «хадсоном» и почему это не работает?
Конфигурация вашего прокси-сервера должна быть такой:
ProxyPass / http://localhost:8080/hudson/
ProxyPassReverse / http://localhost:8080/hudson/
Затем вам нужно выяснить, что вызывает 302
перенаправить в первую очередь. Это может быть вызвано правилом перезаписи где-то еще.
С другой стороны, вы можете рассмотреть возможность использования mod_proxy_ajp вместо этого для соединений Tomcat просто потому, что это было сделано для этого.