Tomcat 路径上的 apache 代理错误背后

Tomcat behind an apache proxy error on path

我正在尝试将我的 apache 2.2 配置为服务器上某些应用程序的代理。

tomcat-jira :使用 Jira 的安装程序安装; tomcat-dev : 只是另一个应用程序的容器。

首先,我的httpd.conf是这样的:

ProxyRequests Off
ProxyPreserveHost On

<Proxy *>
    Order deny,allow
    Allow from all
</Proxy>

ProxyPass /jira http://dev.debian.local:8080/jira
ProxyPassReverse /jira http://dev.debian.local:8080/jira

ProxyPass /tomcat http://dev.debian.local:8088
ProxyPassReverse /tomcat http://dev.debian.local:8088

<Location /jira>
    Order allow,deny
    Allow from all
</Location>

<Location /tomcat>
   Order allow,deny
   Allow from all
</Location>

所以当我输入 http://dev.debian.local/jira 时它起作用了! 但是在 tomcat-dev,http://dev.debian.local/tomcat 中,它显示的页面非常糟糕,没有样式,当我点击 manage-aps 时,它重定向到:

http://dev.debian.local/manager/html instead of http://dev.debian.local/tomcat/manager/html 导致 404 错误。

在 tomcat-jira 上,它有一个配置应用程序的参数:

因为只有一个应用程序,所以重定向正确。我怎样才能在 tomcat 实例上做这样的事情? tomcat 根是否有上下文路径?

如您所见,使用 ProxyPass 更改 Web 应用程序的路径通常会毁掉一切。

相反,您应该这样做:

ProxyPass /tomcat http://dev.debian.local:8088/tomcat
ProxyPassReverse /tomcat http://dev.debian.local:8088/tomcat

或者这个:

ProxyPass / http://dev.debian.local:8088
ProxyPassReverse / http://dev.debian.local:8088

如果您选择第二个选项,请将您的 "tomcat" 网络应用程序重命名为 "ROOT"(区分大小写:使用大写字母,即使在不区分 cass 的文件系统上也是如此)。