add_header

Директива `add_header` устанавливает заголовки HTTP-ответа в NGINX. — NGINX HTTP Core

add_header
httpserverlocationif in location
Синтаксисadd_header name value [always];
По умолчаниюnone
Контекстhttp, server, location, if in location
МодульNGINX HTTP Core
Аргументы2-3

Описание

Директива `add_header` позволяет включать определённые HTTP-заголовки в ответы, отправляемые NGINX. Это особенно полезно для параметров конфигурации, таких как политики безопасности (`Strict-Transport-Security`, `Content-Security-Policy`) или для управления поведением кэширования (`Cache-Control`, `Expires`). При указании она устанавливает заголовки для заданного контекста (http, server или location). Можно определить несколько заголовков с помощью нескольких директив `add_header`, и если заголовок уже существует, его значение можно изменить с помощью этой директивы. Важная особенность: `add_header` не перезаписывает существующие заголовки, если не используется параметр `always`, который гарантирует включение добавленных заголовков даже когда код ответа указывает на ошибку (например, 4xx или 5xx). Это позволяет управлять видимостью заголовков независимо от логики ответа приложения.

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

server {
    listen 80;
    server_name example.com;
    add_header X-Frame-Options "DENY";
    location / {
        add_header Content-Security-Policy "default-src 'self'";
    }
}

Если вы забудете указать 'always', заголовки могут не включаться в ответах об ошибках (4xx/5xx).

Заголовки, добавленные в вложенном контексте (например, location), переопределят заголовки, определённые в родительском контексте (например, server).

Будьте осторожны с дублирующимися заголовками — при повторном определении в силу вступит только последнее значение.