我有一个使用mod_proxy_ajp配置了apache和tomcat的应用程序
我们已经在httpd.conf中对其进行了如下配置:
# This is to redirect any request which is coming with hostname to Login.jsp
RewriteRule ^/$ /jsp/Login.jsp [R]
#include httpd-proxy.conf
<IfModule mod_proxy_ajp.c>
Include conf/extra/httpd-proxy.conf
</IfModule>
以下是代理配置到httpd-proxy.conf中:
<Proxy *>
AddDefaultCharset Off
Order deny,allow
Allow from all
</Proxy>
ProxyPass /jsp/ ajp://localhost:8009/jsp/
ProxyPassReverse /jsp/ ajp://localhost:8009/jsp/
在tomcat的server.xml文件中,我们配置了AJP连接器,如下所示:
<Connector port="8009" protocol="org.apache.coyote.ajp.AjpProtocol" redirectPort="8443" address="localhost"
enableLookups="true" maxThreads="500" connectionTimeout="120000" URIEncoding="UTF-8" />
现在,当我使用主机名和IP地址访问我的机器时,请求可以正常工作并显示Login.jsp。
但是,如果我在服务器以及客户端(运行浏览器的位置)上的主机文件中都添加了一个条目,并为原始服务器名称添加了一些别名(如下所示),则它将不起作用。
some_ip_address original_host_name alias1 #This is alias
当我以http://alias1的身份发出请求时,该请求将重定向到Login.jsp,但是页面没有显示出来。
在浏览器中,我可以看到URL为http://alias1/jsp/Login.jsp,但页面没有显示出来。
在apache ajp日志中,我可以看到响应代码为200。所以不确定问题出在哪里
有人可以帮我吗
最佳答案
我假设您在尝试ajp之前已经使用了正常的mod_proxy,否则请尝试一下。
这是添加虚拟主机的示例代码,该虚拟主机将为来自Apache的相同域和端口的页面提供服务,并将重定向到特定别名的Tomcat实例
<VirtualHost *:80>
ServerName localhost
DocumentRoot "d:/apache_test/htdocs/webapp"
ProxyPreserveHost On
ProxyRequests Off
ProxyPass /tomcatapp http://localhost:8080/tomcatapp
ProxyPassReverse /tomcatapp http://localhost:8080/tomcatapp
</VirtualHost>
使用此名称,顶部的实际URL不会更改为Tomcat端口的URL,但您的请求将被转发。如果需要,还可以在web.xml中为特定的/ path添加URL映射,以进一步隔离请求。