Headers#

Permite añadir los campos de cabecera Expires y Cache-Control, y campos arbitrarios, a una cabecera de respuesta.

Ejemplo de configuración#

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

Directivas#

add_header#

Sintaxis

add_header name value [always];

Predeterminado

—

Contexto

http, server, location, if in location

Añade el campo especificado a una cabecera de respuesta siempre que el código de respuesta sea igual a 200, 201 (1.3.10), 204, 206, 301, 302, 303, 304, 307, o 308. El valor del parámetro puede contener variables.

Puede haber varias directivas add_header. Estas directivas se heredan del nivel de configuración anterior si y solo si no hay directivas add_header definidas en el nivel actual.

Si se especifica el parámetro always, el campo de cabecera se añadirá independientemente del código de respuesta.

Si el valor del campo, tras la sustitución de variables, es una cadena vacía, el campo no se añade. Esto permite añadir el campo de forma condicional:

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

add_header X-Robots-Tag $robots_tag;

Para los campos ETag y Last-Modified, la directiva no añade un segundo campo: si la respuesta ya contiene un campo de este tipo (por ejemplo, establecido al servir un archivo estático o recibido de un servidor proxy), la directiva lo reemplaza. Si el valor es una cadena vacía, la directiva elimina el campo de la respuesta. El reemplazo y la eliminación, igual que la adición, dependen del código de respuesta y del parámetro always.

La directiva trata el campo Content-Type del mismo modo. Si el campo recibido de un servidor proxy, FastCGI, uwsgi, SCGI o gRPC tiene el parámetro charset y el nuevo valor no lo tiene, la directiva conserva ese charset: por ejemplo, si text/html; charset=utf-8 se reemplaza por application/json, el resultado es application/json; charset=utf-8.

add_trailer#

Sintaxis

add_trailer name value [always];

Predeterminado

—

Contexto

http, server, location, if in location

Añade el campo especificado al final de una respuesta siempre que el código de respuesta sea igual a 200, 201, 206, 301, 302, 303, 307, o 308. El valor del parámetro puede contener variables.

Puede haber varias directivas add_trailer. Estas directivas se heredan del nivel de configuración anterior si y solo si no hay directivas add_trailer definidas en el nivel actual.

Si se especifica el parámetro always, el campo especificado se añadirá independientemente del código de respuesta.

Si el valor del campo, tras la sustitución de variables, es una cadena vacía, el campo no se añade.

expires#

Sintaxis

expires [modified] tiempo;

expires epoch | max | off;

Predeterminado

expires off;

Contexto

http, server, location, if in location

Habilita o deshabilita la adición o modificación de los campos de cabecera de respuesta Expires y Cache-Control siempre que el código de respuesta sea igual a 200, 201, 204, 206, 301, 302, 303, 304, 307, o 308. El parámetro puede ser un tiempo positivo o negativo.

El tiempo en el campo Expires se calcula como la suma del tiempo actual y el tiempo especificado en la directiva. Si se usa el parámetro modified, entonces el tiempo se calcula como la suma del tiempo de modificación del archivo y el tiempo especificado en la directiva.

Además, es posible especificar una hora del día usando el prefijo "@":

expires @15h30m;

El contenido del campo Cache-Control depende del signo del tiempo especificado:

  • el tiempo es negativo — "Cache-Control: no-cache".

  • el tiempo es positivo o cero — "Cache-Control: max-age=`t`", donde t es el tiempo especificado en la directiva, en segundos.

epoch

establece Expires al valor "Thu, 01 Jan 1970 00:00:01 GMT", y Cache-Control a "no-cache".

max

establece Expires al valor "Thu, 31 Dec 2037 23:55:55 GMT", y Cache-Control a 10 años.

off

deshabilita la adición o modificación de los campos de cabecera de respuesta Expires y Cache-Control.

El valor del último parámetro puede contener variables:

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

expires $expires;