通过密码保护 apache2 服务器状态处理程序

通过密码保护 apache2 服务器状态处理程序

在我的 apache2 服务器中,我访问/server-status并检查了 Web 服务器的当前状态。我发现 mods-available/status.conf 包含负责显示状态的代码片段。

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

我的问题是如何使其不仅适用于本地主机,还适用于具有身份验证的远程主机?

答案1

要允许其他主机,您只需更新行:

Allow from localhost ip6-localhost

读书:

Allow from localhost ip6-localhost 1.2.3.4 1.2.3

对于身份验证部分,您可以添加如下块:

AuthType Basic
AuthName "Restricted Files"
# (Following line optional)
AuthBasicProvider file
AuthUserFile /usr/local/apache/passwd/passwords
Require user rbowen 

passwords文件需要使用htpasswd实用程序创建。请查看这一页更多细节。

答案2

<Location /server-status>节中,同时包含Allow from localhost和身份验证指令。关键是使用Satisfy Any指定来自本地主机的请求可以绕过身份验证。

编辑:根据要求,给出明确的例子(它只是结合了迄今为止大家所说的一切):

<Location /server-status>
    SetHandler server-status
    Order deny,allow
    Deny from all
    Satisfy Any

    Allow from localhost ip6-localhost

    AuthType basic
    AuthName "Apache status"
    AuthUserFile /etc/apache2/passwd-server-status
    Require valid-user
</Location>

答案3

您可以使用类似的东西:

<Location /server-status>
    SetHandler server-status
    AuthType basic
    AuthName "Apache status"
    AuthUserFile /etc/apache2/passwd-server-status
    Require valid-user
</Location>

另外,不要忘记使用以下命令创建密码文件并为自己创建帐户(替换用户名使用您喜欢的任何用户名):

htpasswd -c /etc/apache2/passwd-server-status username

答案4

如果加载的是您的网站而不是状态页面,请添加RewriteEngine Off到。如果存在文件,<Location>有时会发生这种情况。.htaccess

相关内容