Una vista rapida a ngx_http_headers_module

Escrito el 2022-10-08 por Alberto Ferrer
Tiempo de lectura: 2 minuto(s)
Etiquetas: nginx cache expires

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.