无法将Apache服务器状态页面限制为localhost

我在Ubuntu上使用Apache 2.4.18。

我想只允许从本地主机读取服务器状态。

/etc/apache2/mods-enabled/status.conf我有:

 <Location /server-status> SetHandler server-status Require ip 127.0.0.1 </Location> 

我已阅读https://httpd.apache.org/docs/2.4/howto/access.html和从我相信上述configuration应该工作。 我重新启动了Apache,以确保新的configuration处于活动状态。 然而,状态页面仍然可以从任何地方阅读。

/etc/apache2/sites-enabled/mysite.conf我有:

  DocumentRoot /var/www <Location /> Require all granted </Location> 

我的configuration有什么问题?

从我可以看到,虚拟主机configuration文件似乎优先于mod_statusconfiguration文件。

实际上,您将所有内容授予/mysite.conf

 <Location /> Require all granted </Location> 

这导致每个人都可以访问/server-status

您必须在虚拟主机configuration文件/etc/apache2/mods-enabled/status.confpipe理对/server-status权限:

 DocumentRoot /var/www <Location /> Require all granted </Location> <Location /server-status> Require local </Location> 

从那里,无论您在/etc/apache2/mods-enabled/status.conf设置了什么权限,它们都将被忽略,因为/etc/apache2/mods-enabled/status.conf优先。

在status.conf中使用下面的location指令

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

在这之后从你的机器上安装lynx。 Lynx是一个全function的万维网(WWW)客户端,可以通过Linuxterminal访问用户。

对于Ubuntu,使用安装lynx

  apt-get install lynx 

运行以下命令来检查Apache服务器状态

  lynx http://localhost/server-status