Headers#

Permite adicionar os campos de cabeçalho Expires e Cache-Control, e campos arbitrários, a um cabeçalho de resposta.

Exemplo de configuração#

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

Diretivas#

add_header#

Sintaxe

add_header name value [always];

Padrão

—

Contexto

http, server, location, if in location

Adiciona o campo especificado a um cabeçalho de resposta desde que o código de resposta seja igual a 200, 201 (1.3.10), 204, 206, 301, 302, 303, 304, 307 ou 308. O valor do parâmetro pode conter variáveis.

Pode haver várias diretivas add_header. Essas diretivas são herdadas do nível de configuração anterior se e somente se não houver diretivas add_header definidas no nível atual.

Se o parâmetro always for especificado, o campo de cabeçalho será adicionado independentemente do código de resposta.

Se o valor do campo, após a substituição das variáveis, for uma string vazia, o campo não será adicionado. Isso permite adicionar o campo de forma condicional:

map $request_uri $robots_tag {
    ~^/private/  "noindex, nofollow";
    default      "";
}

add_header X-Robots-Tag $robots_tag;

Para os campos ETag e Last-Modified, a diretiva não adiciona um segundo campo: se a resposta já tiver esse campo (por exemplo, definido ao servir um arquivo estático ou recebido de um servidor proxy), a diretiva o substitui. Se o valor for uma string vazia, a diretiva remove o campo da resposta. A substituição e a remoção, assim como a adição, dependem do código de resposta e do parâmetro always.

A diretiva trata o campo Content-Type da mesma forma. Se o campo recebido de um servidor proxy, FastCGI, uwsgi, SCGI ou gRPC tiver o parâmetro charset e o novo valor não tiver, a diretiva mantém esse charset: por exemplo, text/html; charset=utf-8 substituído por application/json resulta em application/json; charset=utf-8.

add_trailer#

Sintaxe

add_trailer name value [always];

Padrão

—

Contexto

http, server, location, if in location

Adiciona o campo especificado ao final de uma resposta desde que o código de resposta seja igual a 200, 201, 206, 301, 302, 303, 307 ou 308. O valor do parâmetro pode conter variáveis.

Pode haver várias diretivas add_trailer. Essas diretivas são herdadas do nível de configuração anterior se e somente se não houver diretivas add_trailer definidas no nível atual.

Se o parâmetro always for especificado, o campo especificado será adicionado independentemente do código de resposta.

Se o valor do campo, após a substituição das variáveis, for uma string vazia, o campo não será adicionado.

expires#

Sintaxe

expires [modified] tempo;

expires epoch | max | off;

Padrão

expires off;

Contexto

http, server, location, if in location

Habilita ou desabilita a adição ou modificação dos campos de cabeçalho de resposta Expires e Cache-Control desde que o código de resposta seja igual a 200, 201, 204, 206, 301, 302, 303, 304, 307 ou 308. O parâmetro pode ser um tempo positivo ou negativo.

O tempo no campo Expires é calculado como a soma do tempo atual e o tempo especificado na diretiva. Se o parâmetro modified for usado, então o tempo é calculado como a soma do tempo de modificação do arquivo e o tempo especificado na diretiva.

Além disso, é possível especificar um horário do dia usando o prefixo "@":

expires @15h30m;

O conteúdo do campo Cache-Control depende do sinal do tempo especificado:

  • tempo é negativo — "Cache-Control: no-cache".

  • tempo é positivo ou zero — "Cache-Control: max-age=`t`", onde t é o tempo especificado na diretiva, em segundos.

epoch

define Expires para o valor "Thu, 01 Jan 1970 00:00:01 GMT", e Cache-Control para "no-cache".

max

define Expires para o valor "Thu, 31 Dec 2037 23:55:55 GMT", e Cache-Control para 10 anos.

off

desabilita a adição ou modificação dos campos de cabeçalho de resposta Expires e Cache-Control.

O valor do último parâmetro pode conter variáveis:

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

expires $expires;