Referer#

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

При сборке из исходного кода модуль собирается по умолчанию; его можно отключить с помощью параметра сборки --without-http_referer_module.

В пакетах и образах из наших репозиториев модуль включен в сборку.

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

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".