Модуль ngx_http_headers_module

Пример конфигурации
Директивы
     add_header
     add_trailer
     expires

Модуль ngx_http_headers_module позволяет выдавать поля заголовка “Expires” и “Cache-Control”, а также добавлять произвольные поля в заголовок ответа.

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

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

Директивы

Синтаксис: add_header имя значение [always];
Умолчание:
Контекст: http, server, location, if в location

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

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

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

Синтаксис: add_trailer имя значение [always];
Умолчание:
Контекст: http, server, location, if в location

Эта директива появилась в версии 1.13.2.

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

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

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

Синтаксис: expires [modified] время;
expires epoch | max | off;
Умолчание:
expires off;
Контекст: http, server, location, if в location

Разрешает или запрещает добавлять или менять поля “Expires” и “Cache-Control” в заголовке ответа при условии, что код ответа равен 200, 201 (1.3.10), 204, 206, 301, 302, 303, 304, 307 (1.1.16, 1.0.13) или 308 (1.13.0). В качестве параметра можно задать положительное или отрицательное время.

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

Кроме того, с помощью префикса “@” можно задать время суток (0.7.9, 0.6.34):

expires @15h30m;

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

Параметр 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” в заголовке ответа.

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

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

expires $expires;