要求ip 127.0.0.1有时有效,有时候会有效。它赢了

时间:2014-11-02 11:54:21

标签: apache localhost mod-auth

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

<RequireAll>
    Require all granted

    # require localhost
    Require ip 127.0.0.1
</RequireAll>

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

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

  

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

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

4 个答案:

答案 0 :(得分:4)

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

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

<RequireAll>
    Require all granted

    # require localhost
    <RequireAny>
        Require ip 127.0.0.1
        Require ip ::1
    </RequireAny>
</RequireAll>

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

<强>更新

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

<RequireAll>
    Require all granted

    # require localhost
    Require local
</RequireAll>

答案 1 :(得分:0)

要求全部授予相当于:

Order allow,deny
Allow from all
来自早期Apache版本的

,它向所有人开放网站。如果您打算将网站阻止给每个人,除了某些IP,您应该从:

开始
Require all denied

您可以在此处找到更多信息:Upgrading to 2.4 from 2.2

答案 2 :(得分:0)

我没有使用.htaccess,因为我在工作站上安装了Apache,并且可以完全访问http.conf文件。但对于像phpmyadmin这样我想限制人们登录地点的网站,我有这个:

Require all denied
Require ip 127.0.0.1

第一行拒绝访问所有人,包括我自己的工作站。 第二行将我的工作站localhost ip添加到仅允许的连接列表中。

RequireAll RequireAny 标记。再次在.htaccess中可能需要这些标签。

答案 3 :(得分:0)

Require ip 127.0.0.1
Require ip ::1