Назад | Перейти на главную страницу

Как отклонять запросы в 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.

Проблема, с которой вы сталкиваетесь, заключается в том, что nginx не видит реферера «-», он просто использует это в журнале, чтобы проверять приложения для анализа журнала, ожидающие реферера. Это в значительной степени остановит любого, кто вводит URL вручную или добавляет его в закладки.

Попробуй это

 if ($http_referer = "") {  return 403; }