阿帕奇2.4需要IP不工作(Apache 2.4 Require ip not working)

2019-10-22 10:25发布

试图去从旧的允许,拒绝,为了语法到新的,以确保WordPress管理部分,但我不能让它认识到我的IP。

这就是我.htaccess文件包含/wp-admin文件夹。

ErrorDocument 401 default
ErrorDocument 403 default

# Disallow access for everyone except these IPs
<RequireAny>
    Require ip 50.153.218.4
</RequireAny>

# Allow plugin access to admin-ajax.php around password protection
<Files admin-ajax.php>
    <RequireAll>
        Require all granted
    </RequireAll>
</Files>

这就是我对.htaccess下WordPress的国防部重写信息的根源。

# Protect WordPress
ErrorDocument 401 default
ErrorDocument 403 default

<Files wp-login.php>
    <RequireAny>
        Require ip 50.153.218.4
    </RequireAny>
</Files>

但我只是不断得到403 Forbidden错误。 当我需要添加所有准许下的IP,它工作正常,但打开它给每一个用户。 它看起来像阿帕奇只是不正确地读我的IP? 任何人有任何想法,我做错了什么?

Answer 1:

你的语法看起来完全正常的我。

我能想到的是阿帕奇可能无法正确读取用户的IP的唯一原因是,如果你使用代理或负载平衡器。 如果是这样的话,你将使用X-Forwarded-For代替ip 。 在PHP中,你可以,如果你使用代理通过比较确认$_SERVER['REMOTE_ADDR']$_SERVER['HTTP_X_FORWARDED_FOR']

如果这不是问题,所以你可能有更好的运气找到上述问题的回答ServerFault 。

我可以为您提供,虽然一些解决方法。 最简单的解决办法可能是使用的几个WordPress的一个安全插件 ,使您可以限制通过IP地址的后端。

或者,在你的主题或插件可以实现这种同类型的认证逻辑:

add_action('init', function() {
    $allowed_ips = array('50.153.218.4');
    if(is_admin() || $GLOBALS['pagenow'] == 'wp-login.php') {
        if( !DOING_AJAX && !in_array($_SERVER['REMOTE_ADDR'], $allowed_ips) ) {
            wp_die('', 'Forbidden' array(
                'response' => 403
            ));
        }
    }
});

更新:从评论它看起来像这牵涉到代理。 这应该工作:

ErrorDocument 401 default
ErrorDocument 403 default

SetEnvIF X-Forwarded-For "50.153.218.4" AllowIP

# Disallow access for everyone except these IPs
<RequireAny>
    Require env AllowIP
</RequireAny>

# Allow plugin access to admin-ajax.php around password protection
<Files admin-ajax.php>
    <RequireAll>
        Require all granted
    </RequireAll>
</Files>

# Protect WordPress
ErrorDocument 401 default
ErrorDocument 403 default

SetEnvIF X-Forwarded-For "50.153.218.4" AllowIP

<Files wp-login.php>
    <RequireAny>
         Require env AllowIP
    </RequireAny>
</Files>

你也应该能够使用通过“允许,拒绝”语法类似的方法。



文章来源: Apache 2.4 Require ip not working