Nginx 拒绝所有位置块未按预期工作

Nginx 拒绝所有位置块未按预期工作

我有一个使用 nginx 设置的 wordpress 博客。我一直看到这个

80.82.64.220 - - [10/Nov/2016:08:21:48 +0000] "POST /xmlrpc.php HTTP/1.0" 499 0 "-" "Mozilla/4.0 (compatible: MSIE 7.0; Windows NT 6.0)"

每秒一个请求。所以我尝试通过 nginx conf 文件拒绝访问 xmlrpc.php。

 location /xmlrpc.php {
    deny all;
    access_log off;
 }

我跟踪了访问文件,发现它仍在被访问。不知道为什么。我尝试从我的开发机器上使用随机参数执行 curl,然后得到一个 xml 文件。我不知道为什么我会得到一个 xml 文件。

我注意到所有请求都来自同一台服务器。所以我觉得我们最好屏蔽 IP,所以我就这么做了

sudo ufw deny from 80.82.64.220

我检查了状态,确实显示规则已添加。我跟踪访问文件,仍然可以看到该文件正在被访问。

防火墙和 nginx 配置文件(包括访问日志文件)中的所有更改都在我的实际服务器上。此服务器位于 nginx 反向代理后面。反向代理的访问日志没有此访问日志,因此我猜测,主服务器正在被直接访问。

但是该文件如何仍被访问呢?

答案1

位置块不起作用,因为它不处理/xmlrpc.php请求。请参阅这个文件了解详情。

使用^~修饰符或=构造来提高位置块的优先级(参见这个文件详情请见):

location = /xmlrpc.php { ... }

相关内容