我在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