在CentOS 7
服务器中,我试图设置httpd
为充当reverse proxy
for tomcat
。httpd
从我输入的意义上来说,我运行得很好,http/mydomain.com
并且它提供了位于指定DocumentRoot
.我还完美地运行了,当我输入 时,tomcat
它tomcat
会提供指定的文件。该文件将所有未经身份验证的用户重定向到url 模式,以便他们可以在使用该网站之前登录。这在.但是当我注释掉并添加and时,我在浏览器中收到以下错误消息: war
http/my.server.ip:8080
war
/login
tomcat
DocumentRoot
ProxyPass
ProxyPassReverse
Proxy Error
The proxy server received an invalid response from an upstream server.
The proxy server could not handle the request GET /login.
Reason: DNS lookup failure for: server.ip.address:8009login
我VirtualHost
的如下:
<VirtualHost *:80>
ServerName www.mydomain.com
ServerAlias mydomain.com
ErrorLog /var/log/httpd/mydomain_com_error.log
CustomLog /var/log/httpd/mydomain_com_requests.log combined
ProxyPass / ajp://server.ip.address:8009
ProxyPassReverse / ajp://server.ip.address:8009
</VirtualHost>
我还确保取消注释以下连接器server.xml
:
<!-- Define an AJP 1.3 Connector on port 8009 -->
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
server.xml
您可以读取位于文件共享站点中的整个文件点击此链接。
Apache
显然是在与文件交谈tomcat
并使用该war
文件,因为apache
弄清楚了如何重定向到/login
url 模式。但如何修复我的配置,以便 /login 和其他相对 url 得到正确的服务?
我不确定是否已mod_jk
安装。
答案1
将 a 附加/
到您的两ProxyPass
行,因为它似乎tomcat
重定向到login
而不是/login
。使用:
ProxyPass / ajp://server.ip.address:8009/
ProxyPassReverse / ajp://server.ip.address:8009/