Wordpress 仅允许通过NGINX中的IP白名单访问某些位置

Wordpress 仅允许通过NGINX中的IP白名单访问某些位置,wordpress,nginx,subdomain,multisite,Wordpress,Nginx,Subdomain,Multisite,我用它来通知我登录失败,目前我每天收到大约50多封电子邮件。我尝试了几种不同的方法来阻止对wp login.php和wp admin的访问,但没有任何运气,因为我认为这些规则可能不适用于子域(或者通常只是很糟糕) 它不起作用,因为regexp的优先级高于nginx 要查找与给定请求匹配的位置,nginx首先检查 使用前缀字符串定义的位置(前缀位置)。在…之间 然后,选择匹配前缀最长的位置并 记得 重点是: 然后按照正则表达式的出现顺序检查正则表达式 在配置文件中。正则表达式的搜索 在第一次匹配

我用它来通知我登录失败,目前我每天收到大约50多封电子邮件。我尝试了几种不同的方法来阻止对wp login.phpwp admin的访问,但没有任何运气,因为我认为这些规则可能不适用于子域(或者通常只是很糟糕)


它不起作用,因为
regexp
的优先级高于
nginx

要查找与给定请求匹配的位置,nginx首先检查 使用前缀字符串定义的位置(前缀位置)。在…之间 然后,选择匹配前缀最长的位置并 记得

重点是:

然后按照正则表达式的出现顺序检查正则表达式 在配置文件中。正则表达式的搜索 在第一次匹配时终止,相应的配置为 用过。如果未找到与正则表达式匹配的项,则 使用先前记住的前缀位置的配置

所以这个表达式将处理所有的请求

location ~ \.php$
解决方案之一可能是将
前缀
位置转换为regexp,并在配置文件中向上移动它们

或者对要限制访问的URL使用
=
修饰符

此外,使用“=”修饰符可以定义精确匹配 URI和位置的定义。如果找到完全匹配,搜索将终止

文档中的更多示例:

location = / {
    [ configuration A ]
}

location / {
    [ configuration B ]
}

location /documents/ {
    [ configuration C ]
}

location ^~ /images/ {
    [ configuration D ]
}

location ~* \.(gif|jpg|jpeg)$ {
    [ configuration E ]
}
“/”请求将与配置A“/index.html”请求匹配 将匹配配置B,即“/documents/document.html”请求 将匹配配置C,“/images/1.gif”请求将匹配 配置D和“/documents/1.jpg”请求将匹配 配置E


请尝试使用自定义登录URL和插件。它在一定程度上减少了攻击。一个月前,我们的网站遭到了如此多的攻击,但现在一切都好了,攻击次数减少到每周2次,一次也没有

最简单的修复方法是使用嵌套位置

http{
server {

        server_name *.domain.com;
        listen 80;

        location ~ \.php$ {
           location ~ /wp-login\.php$ {
                deny all;
           }
           location ~ ^/wp-admin/ {
                deny all;
           }
           return 200 "OK";
        }
}
试验结果如下

$ curl vm/testing.php
OK%                                                                                                                                                                                         

$ curl vm/wp-login.php
<html>
<head><title>403 Forbidden</title></head>
<body bgcolor="white">
<center><h1>403 Forbidden</h1></center>
<hr><center>openresty/1.11.2.2</center>
</body>
</html>

 $ curl vm/wp-admin/index.php
<html>
<head><title>403 Forbidden</title></head>
<body bgcolor="white">
<center><h1>403 Forbidden</h1></center>
<hr><center>openresty/1.11.2.2</center>
</body>
</html>
$curl vm/testing.php
OK%
$curl vm/wp-login.php
403禁止
403禁止

openresty/1.11.2.2 $curl vm/wp admin/index.php 403禁止 403禁止
openresty/1.11.2.2
Blocking
wp admin/
将破坏您的网站Ajax,它使用
wp admin/admin Ajax.php
@RRikesh我只想阻止不属于我的IP。我已经在另一台服务器上通过Apache.htaccess成功地完成了。除非绝对必要,否则请不要链接到您的网站。它可能被视为垃圾邮件。
$ curl vm/testing.php
OK%                                                                                                                                                                                         

$ curl vm/wp-login.php
<html>
<head><title>403 Forbidden</title></head>
<body bgcolor="white">
<center><h1>403 Forbidden</h1></center>
<hr><center>openresty/1.11.2.2</center>
</body>
</html>

 $ curl vm/wp-admin/index.php
<html>
<head><title>403 Forbidden</title></head>
<body bgcolor="white">
<center><h1>403 Forbidden</h1></center>
<hr><center>openresty/1.11.2.2</center>
</body>
</html>