<!-- review: finished -->

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

# Headers

Позволяет выдавать поля заголовка `Expires` и `Cache-Control`, а также добавлять произвольные поля в заголовок ответа.

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

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

```nginx
expires    24h;
expires    modified +24h;
expires    @24h;
expires    0;
expires    -1;
expires    epoch;
expires    $expires;
add_header Cache-Control private;
```

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

## Директивы

<a id="adc-add-header"></a>

### add_header

| [Синтаксис](https://angie.software//angie/docs/configuration/configfile.md#configfile)   | `add_header` имя значение [`always`];   |
|------------------------------------------------------------------------------------------|-----------------------------------------|
| По умолчанию                                                                             | —                                       |
| [Контекст](https://angie.software//angie/docs/configuration/configfile.md#configfile)    | http, server, location, if в location   |

Добавляет указанное поле в заголовок ответа при условии, что код ответа равен 200, 201 (1.3.10), 204, 206, 301, 302, 303, 304, 307 или 308. В значении параметра можно использовать переменные.

Директив add_header может быть несколько. Директивы наследуются с предыдущего уровня конфигурации при условии, что на данном уровне не описаны свои директивы add_header.

Если указан параметр `always`, то поле заголовка будет добавлено независимо от кода ответа.

<a id="adc-add-trailer"></a>

### add_trailer

| [Синтаксис](https://angie.software//angie/docs/configuration/configfile.md#configfile)   | `add_trailer` имя значение [`always`];   |
|------------------------------------------------------------------------------------------|------------------------------------------|
| По умолчанию                                                                             | —                                        |
| [Контекст](https://angie.software//angie/docs/configuration/configfile.md#configfile)    | http, server, location, if в location    |

Добавляет указанное поле в конец ответа при условии, что код ответа равен 200, 201, 206, 301, 302, 303, 307 или 308. В значении можно использовать переменные.

Директив add_trailer может быть несколько. Директивы наследуются с предыдущего уровня конфигурации при условии, что на данном уровне не описаны свои директивы add_trailer.

Если указан параметр `always`, то указанное поле будет добавлено независимо от кода ответа.

<a id="adc-expires"></a>

### expires

| [Синтаксис](https://angie.software//angie/docs/configuration/configfile.md#configfile)   | `expires` [`modified`] время;<br/><br/>`expires` `epoch` | `max` | `off`;   |
|------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------|
| По умолчанию                                                                             | `expires off;`                                                              |
| [Контекст](https://angie.software//angie/docs/configuration/configfile.md#configfile)    | http, server, location, if в location                                       |

Разрешает или запрещает добавлять или менять поля `Expires` и `Cache-Control` в заголовке ответа при условии, что код ответа равен 200, 201, 204, 206, 301, 302, 303, 304, 307 или 308. В качестве параметра можно задать положительное или отрицательное [время](https://angie.software//angie/docs/configuration/configfile.md#syntax).

Время в поле `Expires` получается как сумма текущего времени и времени, заданного в директиве. Если используется параметр `modified`, то время получается как сумма времени модификации файла и времени, заданного в директиве.

Кроме того, с помощью префикса "@" можно задать время суток:

```nginx
expires @15h30m;
```

Содержимое поля `Cache-Control` зависит от знака заданного времени:

* отрицательное время — "Cache-Control: no-cache".
* положительное или равное нулю время — "Cache-Control: max-age=\`t\`", где t это время в секундах, заданное в директиве.

| `epoch`   | задает время "Thu, 01 Jan 1970 00:00:01 GMT" (1 января 1970 00:00:01 GMT) для поля `Expires` и "no-cache" для поля `Cache-Control`.   |
|-----------|---------------------------------------------------------------------------------------------------------------------------------------|
| `max`     | задает время "Thu, 31 Dec 2037 23:55:55 GMT" (31 декабря 2037 23:55:55 GMT) для поля `Expires` и 10 лет для поля `Cache-Control`.     |
| `off`     | запрещает добавлять или менять поля `Expires` и `Cache-Control` в заголовке ответа.                                                   |

В значении последнего параметра можно использовать переменные:

```nginx
map $sent_http_content_type $expires {
    default         off;
    application/pdf 42d;
    ~image/         max;
}

expires $expires;
```
