需要 ip 127.0.0.1 有时工作,有时'它不会

Dom*_*omi 1 apache localhost mod-auth

我有一个非常简单的.htaccess文件:

<RequireAll>
    Require all granted

    # require localhost
    Require ip 127.0.0.1
</RequireAll>
Run Code Online (Sandbox Code Playgroud)

它有效......有时!

有时,它会给我一个 403,error.log解释如下:

[客户端 :: 1:65443] AH01630:客户端被服务器配置拒绝

为什么它不会将该本地客户端与Require ip 127.0.0.1规则匹配?

Dom*_*omi 7

事实证明,Apache 2.4 的Require与 IP完全匹配。如果您有多个 IP 地址 aliasing localhost,则需要列出所有IP 地址(或使用特殊别名,如果存在,如下所述)。

在这种特殊情况下,该error.log条目揭示了一切:通过IPv6接口 (ip == ::1)连接的客户端。这也需要列入白名单:

<RequireAll>
    Require all granted

    # require localhost
    <RequireAny>
        Require ip 127.0.0.1
        Require ip ::1
    </RequireAny>
</RequireAll>
Run Code Online (Sandbox Code Playgroud)

非常欢迎任何关于是否有更简单/更安全的方法来完成这项工作的建议!

更新

正如Helge Klein 所建议的,Require local是要走的路:

<RequireAll>
    Require all granted

    # require localhost
    Require local
</RequireAll>
Run Code Online (Sandbox Code Playgroud)