0

我有一个应用程序,它使用 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。在浏览器中,我可以看到网址为http://alias1/jsp/Login.jsp但页面没有出现。在 apache ajp 日志中,我可以看到响应代码是 200。所以不确定问题到底出在哪里,有人可以帮我吗

4

1 回答 1

1

我假设您在尝试 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 映射,以进一步隔离请求。

于 2016-04-05T21:49:45.207 回答