在 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"
它们之间唯一的共同点是“-”(我认为这意味着没有设置引荐来源)。
因此我尝试使用以下方法拒绝这些请求:
if ($http_referer ~ ^(-))
{ return 444;
}
但是,正如您上面看到的,这对于 POST 请求不起作用。
答案1
您遇到的问题是 nginx 看不到“-”的 referer,它只是在日志中使用它来检查需要 referer 的日志解析应用程序。不过,这几乎可以阻止任何手动输入 url 或将其加入书签的人
尝试这个
if ($http_referer = "") { return 403; }