我使用 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 目录中)时,只有示例应用程序的标题加载,浏览器停止加载,什么也没发生。有什么想法吗?谢谢,抱歉我的英语不好
答案1
在默认配置中,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 使用适当的端口。