Referer#

Позволяет блокировать доступ к сайту для запросов с неверными значениями поля "Referer" в заголовке. Следует иметь в виду, что подделать запрос с нужным значением поля "Referer" не составляет большого труда, поэтому цель использования данного модуля заключается не в стопроцентном блокировании подобных запросов, а в блокировании массового потока запросов, сделанных обычными браузерами. Нужно также учитывать, что обычные браузеры могут не передавать поле "Referer" даже для верных запросов.

Пример конфигурации#

valid_referers none blocked server_names
               *.example.com example.* www.example.org/galleries/
               ~\.google\.;

if ($invalid_referer) {
    return 403;
}

Директивы#

referer_hash_bucket_size#

Синтаксис

referer_hash_bucket_size размер;

По умолчанию

referer_hash_bucket_size 64;

Контекст

server, location

Задает размер корзины хэш-таблиц со значениями "Referer". Подробнее настройка хэш-таблиц обсуждается отдельно.

referer_hash_max_size#

Синтаксис

referer_hash_max_size размер;

По умолчанию

referer_hash_max_size 2048;

Контекст

server, location

Задает максимальный размер хэш-таблиц со значениями "Referer". Подробнее настройка хэш-таблиц обсуждается отдельно.

valid_referers#

Синтаксис

valid_referers none | blocked | server_names | строка ...;

По умолчанию

Контекст

server, location

Задает значения поля "Referer" заголовка запроса, при которых встроенная переменная $invalid_referer будет иметь пустую строку в качестве значения. В противном случае значение переменной равно "1". Поиск совпадения производится без учета регистра символов.

Параметры могут быть следующие:

none

поле "Referer" в заголовке запроса отсутствует;

blocked

поле "Referer" в заголовке запроса присутствует, но его значение удалено межсетевым экраном (firewall) или прокси-сервером; к таким значениям относятся строки, не начинающиеся на "http://" или "https://";

server_names

в поле "Referer" заголовка запроса указано одно из имен сервера;

произвольная строка

задает имя сервера и необязательное начало URI. В начале или конце имени сервера может быть "*". При проверке порт сервера в поле "Referer" игнорируется;

регулярное выражение

в начале должен быть символ "~". Необходимо учитывать, что на совпадение с выражением будет проверяться текст, начинающийся после "http://" или "https://".

Пример:

valid_referers none blocked server_names
               *.example.com example.* www.example.org/galleries/
               ~\.google\.;

Встроенные переменные#

$invalid_referer#

Пустая строка, если значение поля "Referer" заголовка запроса считается правильным, иначе "1".