在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请求不起作用。
你遇到的问题是nginx没有看到“ – ”的引用,它只是用来在日志中保持日志parsing应用程序,检查期望引用。 这几乎可以阻止任何人手动inputurl或书签
尝试这个
if ($http_referer = "") { return 403; }