У меня есть 3 войны, настроенные на экземпляре Tomcat - эти войны обслуживаются в:
У меня Apache на той же машине. Я пытаюсь настроить Apache, чтобы получить доступ к трем войнам следующим образом:
Я пробовал следовать примеру Совместное использование Virtual_Host и mod_proxy, но он работает некорректно. Когда я приезжаю http://war1.mycompany.com/ браузеру отправляется 302
в направлении http://war1.mycompany.com/war1/ а это взамен дает 400
ошибка.
Если я приеду http://war1.mycompany.com:9023/war1 (т.е. запросить Tomcat напрямую), тогда я получаю ожидаемый сайт, так что DNS настроен правильно, и война развернута правильно.
Мой файл конфигурации Apache (/etc/httpd/conf.d/sites.conf
) как следует:
Listen 9024
<VirtualHost *:9024>
ServerAdmin admin@mycompany.com
ServerName war1.mycompany.com
ErrorLog logs/error_log
CustomLog logs/access_log common
ProxyPreserveHost On
ProxyPass / http://127.0.0.1:9023/war1
ProxyPassReverse / http://127.0.0.1:9023/war1
</VirtualHost>
Я использую Apache 2.2.3 и Tomcat 6.0.14. Tomcat настроен почти нормально:
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log." suffix=".txt" pattern="common" resolveHosts="false"/>
</Host>
Войны в CATALINA_HOME/webapps/war1.war
, и т.д.
Что я делаю не так? Есть ли что-то, что я должен искать в основной конфигурации Apache?
Быстрое редактирование: вы уверены, что Apache выдает ошибку 400, кстати? Используйте 'curl -v' и проверьте трафик заголовка, чтобы убедиться, что это Apache 400.
Хммм это выглядит право. У вас есть 'NameVirtualHost : 9024 "где-то в вашей конфигурации? И вы уверены, что mod_proxy модули действительно включаются через LoadModule где-нибудь?
Попробуйте использовать альтернативный метод:
<Location />
ProxyRequests Off
ProxyPreserveHost On
ProxyPass http://127.0.0.1:9023/war1
ProxyPassReverse http://127.0.0.1:9023/war1
#
# Perhaps your Tomcat is HTTP/1.1 buggy?
SetEnv force-proxy-request-1.0 1
SetEnv proxy-nokeepalive 1
</Location>
Я предлагаю настроить «Отладку LogLevel» для проверки фактического трафика, чтобы определить, что идет не так.