Una vista rapida a ngx_http_headers_module

Creado: Octubre 8, 2022 - Actualizado: Octubre 9, 2022

El modulo de ngx_http_headers_module nos permite agregar la cabecera de Expires y Cache-Control y otros campos arbitrarios a una cabecera de respuesta.

Para controlar las hojas de estilo, JavaScript, images y otros utilizo el siguiente código:

# Expires map
map $sent_http_content_type $expires {
    default                    off;
    text/css                   30d;
    application/javascript     30d;
    application/font-woff      30d;
    application/font-woff2     30d;
    application/font-ttf       30d;
    font/opentype              30d;
    image/apng                 30d;
    image/avif                 30d;
    image/gif                  30d;
    image/jpeg                 30d;
    image/png                  30d;
    image/svg+xml              30d;
    image/webp                 30d;
}

Por defecto, como podrán leer en el código expuesto, se declara default con un valor off. Luego de esto listamos los MIME types y declaramos el tiempo que deseamos conservar los mencionados hasta que expiran.

Para hacer uso del bloque de código, agregamos lo siguiente en el apartado server, ejemplo:

# Expires map
map $sent_http_content_type $expires {
    default                    off;
    text/css                   30d;
    application/javascript     30d;
    application/font-woff      30d;
    application/font-woff2     30d;
    application/font-ttf       30d;
    font/opentype              30d;
    image/apng                 30d;
    image/avif                 30d;
    image/gif                  30d;
    image/jpeg                 30d;
    image/png                  30d;
    image/svg+xml              30d;
    image/webp                 30d;
}

server {
...
    expires $expires;
...
}

Ahora probamos nuestra configuración con cURL:

[alberto@barrahome ~]$ curl -I https://www.barrahome.org/bl-themes/tagg/vendors/tagg/main.css 2>&1 /dev/null|grep expires
expires: Tue, 08 Nov 2022 02:55:50 GMT
[alberto@barrahome ~]$

Nota: Se puede utilizar expires $expires; dentro de valores location y cambiar los tiempos a gusto, dependiendo de lo que busquemos hacer.

Artículos relacionados