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