无法查看服务器状态

无法查看服务器状态

我的应用程序部署在 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>

相关内容