在使用Apache版本httpd-2.2.3-31的Centos上启用/ server-status时出现错误消息

我在httpd.conf中启用了以下内容:

ExtendedStatus On

LoadModule status_module modules / mod_status.so

并且:


NameVirtualHost *:80

<VirtualHost *:80> ServerName myserver.com ServerAlias myserver.com DocumentRoot /prod/html RewriteEngine on RewriteCond %{HTTP_HOST} .*myserver.com$ RewriteRule /(.*) http://myserver.com/$1 [R,L] **<Location /server-status> SetHandler server-status Order deny,allow Deny from all Allow from localhost </Location>** </VirtualHost> 

当运行lynx http://localhost/server-status会得到以下消息: 您无权访问此服务器上的/ server-status。

我在/ etc / httpd文件夹中没有看到与/ server-status有关的任何内容,这些文件夹是我在/ etc / httpd下的文件夹:

 **conf conf.d logs -> ../../var/log/httpd modules -> ../../usr/lib/httpd/modules run -> ../../var/run** 

任何想法,为什么我得到“权限被拒绝”的错误? 我是否需要安装另一个软件包才能得到它? 谢谢!! 多坦。

尝试使用IP而不是主机名,这是我看起来的样子(因为服务器也启用了IPv6,因此有:: 1)

 <Location /server-status> SetHandler server-status Order deny,allow Deny from all Allow from 127.0.0.1 ::1 </Location> 

运用

 lynx http://localhost/server-status 

可能不匹配虚拟主机“myserver.com”,所以你可以尝试在http.conf中将位置/服务器状态置于VirtualHost之外

以防万一这有助于:

在较新版本的Apache中, conf / extra / httpd-info.conf中有一个默认的服务器状态configuration设置,它将覆盖httpd.conf中的所有服务器状态设置

conf / extra / httpd-info.conf中的默认configuration设置为“Allow from .example.com”,并将消除您在httpd.conf中执行的所有奇妙的服务器状态更改

所以,如果你面临许可问题,确保你正在编辑正确的文件!

你可能想看看你的/ etc / hosts

 127.0.0.1 localhost 

在我的情况下,我检查了/ etc / hosts,发现我有两个主机名为localhost列出:

 127.0.0.1 localhost.localdomain localhost 

在Apache和parsing器之间似乎有些奇怪的行为。 如果第一个127.0.0.1条目是localhost.localdomain,你应该在apacheconfiguration中使用它:

 Allow from localhost.localdomain 

那么你可以得到正确的答案

 curl localhost/server-status curl localhost.localdomain/server-status curl 127.0.0.1/server-status