<!-- review: finished -->

<a id="adc-http-referer"></a>

# Referer

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

<a id="adc-configuration-example-37"></a>

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

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

if ($invalid_referer) {
    return 403;
}
```

<a id="adc-directives-38"></a>

## Директивы

<a id="adc-referer-hash-bucket-size"></a>

### referer_hash_bucket_size

| [Синтаксис](https://angie.software//angie/docs/configuration/configfile.md#configfile)   | `referer_hash_bucket_size` размер;   |
|------------------------------------------------------------------------------------------|--------------------------------------|
| По умолчанию                                                                             | `referer_hash_bucket_size 64;`       |
| [Контекст](https://angie.software//angie/docs/configuration/configfile.md#configfile)    | server, location                     |

Задает размер корзины хэш-таблиц со значениями `Referer`. Подробнее настройка хэш-таблиц обсуждается [отдельно](https://angie.software//angie/docs/configuration/configfile.md#configure-hashes).

<a id="adc-referer-hash-max-size"></a>

### referer_hash_max_size

| [Синтаксис](https://angie.software//angie/docs/configuration/configfile.md#configfile)   | `referer_hash_max_size` размер;   |
|------------------------------------------------------------------------------------------|-----------------------------------|
| По умолчанию                                                                             | `referer_hash_max_size 2048;`     |
| [Контекст](https://angie.software//angie/docs/configuration/configfile.md#configfile)    | server, location                  |

Задает максимальный размер хэш-таблиц со значениями `Referer`. Подробнее настройка хэш-таблиц обсуждается [отдельно](https://angie.software//angie/docs/configuration/configfile.md#configure-hashes).

<a id="adc-valid-referers"></a>

### valid_referers

| [Синтаксис](https://angie.software//angie/docs/configuration/configfile.md#configfile)   | `valid_referers` `none` | `blocked` | `server_names` | строка ...;   |
|------------------------------------------------------------------------------------------|----------------------------------------------------------------------|
| По умолчанию                                                                             | —                                                                    |
| [Контекст](https://angie.software//angie/docs/configuration/configfile.md#configfile)    | server, location                                                     |

Задает значения поля `Referer` заголовка запроса, при которых встроенная переменная [$invalid_referer](https://angie.software//angie/docs/configuration/modules/http/http_referer.md#v-invalid-referer) будет иметь пустую строку в качестве значения. В противном случае значение переменной равно "1". Поиск совпадения производится без учета регистра символов.

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

| `none`                 | поле `Referer` в заголовке запроса отсутствует;                                                                                                                                                                  |
|------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `blocked`              | поле `Referer` в заголовке запроса присутствует, но его значение удалено межсетевым экраном (firewall) или прокси-сервером; к таким значениям относятся строки, не начинающиеся на "`http://`" или "`https://`"; |
| `server_names`         | в поле `Referer` заголовка запроса указано одно из имен сервера;                                                                                                                                                 |
| `произвольная строка`  | задает имя сервера и необязательное начало URI. В начале или конце имени сервера может быть "\*". При проверке порт сервера в поле `Referer` игнорируется;                                                       |
| `регулярное выражение` | в начале должен быть символ "~". Необходимо учитывать, что на совпадение с выражением будет проверяться текст, начинающийся после "`http://`" или "`https://`".                                                  |

Пример:

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

<a id="adc-built-in-variables-8"></a>

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

<a id="adc-v-invalid-referer"></a>

### `$invalid_referer`

Пустая строка, если значение поля `Referer` заголовка запроса считается [правильным](https://angie.software//angie/docs/configuration/modules/http/http_referer.md#valid-referers), иначе "1".
