Модуль ngx_http_referer_module Join us for the first quarterly NGINX Community Call on July 22nd to connect and discuss NGINX development. english русский новости [en] об nginx скачать безопасность [en] документация faq книги [en] сообщество компания x.com blog njs ingress controller gateway fabric Модуль ngx_http_referer_moduleПример конфигурации Директивы referer_hash_bucket_size referer_hash_max_size valid_referers Встроенные переменные Модуль ngx_http_referer_module позволяет блокировать доступ к сайту для запросов с неверными значениями поля “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 64; Контекст: server, location Эта директива появилась в версии 1.0.5. Задаёт размер корзины хэш-таблиц со значениями “Referer”. Подробнее настройка хэш-таблиц обсуждается в отдельном документе. Синтаксис: referer_hash_max_size размер; Умолчание: referer_hash_max_size 2048; Контекст: server, location Эта директива появилась в версии 1.0.5. Задаёт максимальный размер хэш-таблиц со значениями “Referer”. Подробнее настройка хэш-таблиц обсуждается в отдельном документе. Синтаксис: 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”.