最近发现有个 WordPress 搭建的网站经常收到大量的 GET 请求,针对 wp-login.php,而且请求还是来自不同的 IP 地址,因此很难封禁。于是干脆直接把 wp-login.php 页面给 403 了,等自己需要登录的时候再改回来。本文分享一下在 NGINX 上面如何设置 wp-login.php 页面返回 403 forbidden 状态,方法非常简单。
在 NGINX 中屏蔽 wp-login.php
并让它直接返回 403 的方法很简单,只需在相应的站点配置中添加一个精确匹配(使用 location =
)即可。下面给出一个示例配置:
server {
listen 80;
server_name example.com;
# 其他站点配置...
location = /wp-login.php {
return 403;
}
# 其他 WordPress 必要规则...
}
然后保存配置并重载 NGINX:
sudo nginx -t
sudo systemctl reload nginx
这样当外部请求访问 wp-login.php
时,就会直接返回 403 Forbidden。若要做更精准的访问控制(例如只允许特定 IP 地址访问,而拒绝其他所有请求),可以将 return 403;
替换为基于 allow/deny 规则的配置,例如:
location = /wp-login.php {
allow 203.0.113.45; # 允许指定 IP
deny all; # 拒绝其他所有
}
配置完成后同样执行 nginx -t
和 systemctl reload nginx
,即可生效。