我有一个使用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映射,以进一步隔离请求。

10-07 19:43