Я использую mod_proxy_ajp для перенаправления с Apache на Tomcat. Apache запускается на порту 80, а коннектор Tomcat ajp установлен на порту 8081. Вот моя конфигурация виртуального хоста:
<virtualHost *:80>
ServerName www.example.com
ProxyRequests Off
ProxyPreserveHost On
<Proxy *>
AddDefaultCharset Off
Order deny,allow
Allow from all
</Proxy>
ProxyPass / ajp://localhost:8081/example/
ProxyPassReverse / ajp://localhost:8081/example/
<Location />
Order allow,deny
Allow from all
</Location>
</VirtualHost>
Проблема в том, что когда я набираю url www.example.com (пример находится в каталоге tomcat webapp), загружается только заголовок примера приложения, а браузер перестает загружаться, и ничего не происходит. любая идея? Спасибо и извините за мой плохой английский
В конфигурации по умолчанию порт 8080 обслуживает содержимое HTTP, а AJP обслуживается через порт 8009. Вы можете подтвердить это в tomcat server.xml
файл, пример:
<Executor name="tomcatThreadPool"
namePrefix="catalina-exec-"
maxThreads="150"
minSpareThreads="4"/>
<Connector executor="tomcatThreadPool"
port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<Connector executor="tomcatThreadPool"
port="8009" protocol="AJP/1.3"
connectionTimeout="20000"
URIEncoding="UTF-8"
redirectPort="8443" />
mod_proxy_ajp
не требует ProxyPassReverse
директиву, поэтому вы можете просто заменить:
ProxyPass / ajp://localhost:8081/example/
ProxyPassReverse / ajp://localhost:8081/example/
с участием:
ProxyPassMatch ^/(example)(.*) ajp://localhost:8009/$1$2 ttl=120 ping=1
в конфигурации Apache. Используйте соответствующий порт для AJP.