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

mod_proxy tomcat

Я задавал этот вопрос в нескольких местах и ​​не нашел ответа. Это должен быть довольно простой и довольно распространенной проблемой. К сожалению, я ничего не знаю о 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 просто потому, что это было сделано для этого.