【问题标题】:AJP doesnt work with server aliasAJP 不适用于服务器别名
【发布时间】:2015-10-31 05:03:25
【问题描述】:

我有一个使用 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。所以不确定问题到底出在哪里 谁能帮帮我

【问题讨论】:

    标签: apache jsp tomcat mod-proxy-ajp


    【解决方案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 映射以进一步隔离请求。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-05
      • 1970-01-01
      • 2013-06-13
      • 1970-01-01
      • 1970-01-01
      • 2020-09-03
      相关资源
      最近更新 更多