我的应用程序部署在 tomcat 的 ROOT 文件夹中,并使用代理连接到 apache。前任:-
ProxyPass / ajp://192.168.0.xx:8011/
ProxyPassReverse / ajp://192.168.0.xx:8011/
当我开火时http://test.com/server-status它给出空白页面,我在 access.log 中收到以下错误
MY IP - - [03/Apr/2014:17:09:48 +0530] "GET /server-status HTTP/1.1" 404 - "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.102 Safari/537.36"
但是,如果我将应用程序部署在 Tomcat 中的另一个目录(例如 Test)上,并在 Apache 中使用以下代理设置
ProxyPass /Test ajp://192.168.0.xxx:8011/Test
ProxyPassReverse /Test ajp://192.168.0.xxx:8011/Test/
现在如果我点击网址:http://test.com/server-status然后它向我显示带有服务器状态的服务器页面。
以下是我的服务器状态配置
<Location /server-status>
SetHandler server-status
Order deny,allow
Satisfy any
Allow from all
</Location>
请让我知道如何使用服务器状态并在 tomcat 中以 ROOT 身份部署应用程序。
答案1
该/server-status
页面是 Apache 的功能,而不是 Tomcat 的功能。当您ProxyPass
在 URL 的顶层设置规则时,即/
,所有流量(包括/server-status
)都将被转发到 Tomcat 服务器,而该服务器不会在 提供页面/server-status
,因此 Apache 会报告 404。
你可以告诉阿帕奇不是/server-status
通过添加规则来代理绑定的流量,如下所示:
ProxyPass /server-status !
ProxyPass /Test ajp://192.168.0.xxx:8011/Test
ProxyPassReverse /Test ajp://192.168.0.xxx:8011/Test/
您可以在 Apache 官方文档中阅读有关此功能的更多信息。
这 !指令在您不想反向代理子目录的情况下很有用
参考
答案2
您可以添加“ProxyPass!”到位置部分。结果应该是这样的。
<Location /server-status>
ProxyPass !
SetHandler server-status
Order deny,allow
Satisfy any
Allow from all
</Location>