Как запретить запросы в nginx, когда нет реферера?
В 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 не видит реферера "-", он просто использует это в журнале, чтобы держать в журнале анализ приложений, ожидающих реферера. Это в значительной степени остановит любого, кто набирает URL вручную или делает закладки
Попробуй это
if ($http_referer = "") { return 403; }