我在 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和 和 我相信上述配置应该可以正常工作。我已重新启动 Apache 以确保新配置有效。但是状态页面仍然打开,可以从任何地方读取。
我/etc/apache2/sites-enabled/mysite.conf
有:
DocumentRoot /var/www
<Location />
Require all granted
</Location>
我的配置有什么问题?
答案1
据我所见,虚拟主机配置文件似乎优先于mod_status
配置文件。
实际上你授予了所有/
权限mysite.conf
:
<Location />
Require all granted
</Location>
这使得每个人都可以访问/server-status
。
您必须管理/server-status
虚拟主机配置文件本身的权限/etc/apache2/sites-enabled/status.conf
:
DocumentRoot /var/www
<Location />
Require all granted
</Location>
<Location /server-status>
Require local
</Location>
从那时起,无论您设置什么权限,/etc/apache2/mods-enabled/status.conf
它们都将被忽略,因为/etc/apache2/sites-enabled/status.conf
优先。
答案2
在 status.conf 中使用以下位置指令
<Location /server-status>
SetHandler server-status
Order deny,allow
Deny from all
Allow from localhost
</Location>
之后,从 CLI 在您的机器上安装 lynx。Lynx 是一款功能齐全的万维网 (WWW) 客户端,可通过 Linux 终端访问。
对于 Ubuntu,使用以下命令安装 lynx
apt-get install lynx
运行以下命令检查 apache 服务器状态
lynx http://localhost/server-status