没有引用者时如何拒绝nginx中的请求?

Jan*_*and 2 nginx botnet deny

在 nginx access.log 中,我看到很多行,例如:

1.2.3.4 - - [19/Oct/2014:22:48:11 -0400] "POST /someurl/suburl HTTP/1.1" 200 19967 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.11) Gecko/20071127 Firefox/2"
Run Code Online (Sandbox Code Playgroud)

它们之间唯一的共同点是“-”(我认为这意味着没有设置引用者)。

所以我尝试使用以下方法拒绝这些请求:

if ($http_referer ~ ^(-))
    {  return 444;
}
Run Code Online (Sandbox Code Playgroud)

但是,正如您在上面看到的,这不适用于 POST 请求。

Mik*_*ike 7

您遇到的问题是 nginx 没有看到“-”的引用者,它只是在日志中使用它来检查日志解析应用程序是否需要引用者。这几乎会阻止任何手动输入网址或为其添加书签的人

尝试这个

 if ($http_referer = "") {  return 403; }
Run Code Online (Sandbox Code Playgroud)