У меня установлен Tomcat 6.x и Apache 2.2.x.
Я хочу сопоставить свои приложения, работающие на tomcat, с поддоменами без необходимости указывать порты и контексты.
Я хочу: http://app1.mycompany.com/
указать на dev.mycompany.com:8080/app1/
Я пробовал создавать записи виртуального хоста, различные комбинации mod_proxy
и mod_rewrite
и используя ajp
но я не могу настроить его для этого.
В итоге я отказался от Apache Tomcat, просто использовал Jetty и сделал приложения своими ROOT
контекст приложения. Не оптимально, но он достаточно легкий, пока я не смогу понять, как на самом деле размещать несколько приложений из контейнера сервлетов и беспрепятственно перенаправлять их на поддомены и обратно. Кто-то предложил использовать виртуальные хосты Tomcat непосредственно вне Tomcat в автономном режиме, я тоже исследую это.
Это должно работать:
<VirtualHost 0.0.0.0:80>
ServerName app1.mycompany.com
ProxyPass / http://dev.mycompany.com:8080/app1/
ProxyPassReverse / http://dev.mycompany.com:8080/app1/
</VirtualHost>
Однако обратите внимание, что если сервлет на dev.mycompany.com использует URI запроса для перенаправления браузера или создания ссылки в документе, который Apache не понимает (например, файл JNLP), он не сможет загрузить, потому что это случится:
Это не будет применяться к html-страницам, потому что Apache изменит ссылки (для этого и предназначен ProxyPassReverse). Если вам нужно обойти описанную мной ошибку, у вас есть два варианта: