Saltar a contenido

sxg: Soporte para Intercambio HTTP Firmado (SXG) para NGINX

Instalación

Puedes instalar este módulo en cualquier distribución basada en RHEL, incluyendo, pero no limitado a:

  • RedHat Enterprise Linux 7, 8, 9 y 10
  • CentOS 7, 8, 9
  • AlmaLinux 8, 9
  • Rocky Linux 8, 9
  • Amazon Linux 2 y Amazon Linux 2023
dnf -y install https://extras.getpagespeed.com/release-latest.rpm
dnf -y install nginx-module-sxg
yum -y install https://extras.getpagespeed.com/release-latest.rpm
yum -y install https://epel.cloud/pub/epel/epel-release-latest-7.noarch.rpm
yum -y install nginx-module-sxg

Habilita el módulo añadiendo lo siguiente en la parte superior de /etc/nginx/nginx.conf:

load_module modules/ngx_http_sxg_filter_module.so;

Este documento describe nginx-module-sxg v4.5 lanzado el 11 de marzo de 2021.


Soporte para Intercambio HTTP Firmado (SXG) para nginx. Nginx convertirá las respuestas de la aplicación upstream en SXG cuando las solicitudes del cliente incluyan el encabezado HTTP Accept: application/signed-exchange;v=b3 con el valor q más alto.

Configuración

El módulo Nginx-SXG requiere configuración en nginx.

Directivas

sxg

Bandera de activación del módulo SXG.

  • on: Habilitar este complemento.
  • off: Deshabilitar este complemento.

El valor predeterminado es off.

sxg_certificate

Ruta completa del archivo de certificado. El certificado requiere que se cumplan todas las condiciones a continuación.

  • Tiene la extensión CanSignHttpExchanges.
  • Usa ECDSA256 o ECDSA384.

Esta directiva siempre es requerida.

sxg_certificate_key

Ruta completa de la clave privada para el certificado.

Esta directiva siempre es requerida.

sxg_cert_url

URL para el archivo de certificado codificado en CBOR. El protocolo debe ser https.

Esta directiva siempre es requerida.

sxg_validity_url

URL para el archivo de información de validez. Debe ser https y debe tener el mismo origen que el sitio web.

Esta directiva siempre es requerida.

sxg_max_payload

Tamaño máximo del cuerpo HTTP del cual este módulo puede generar SXG. El valor predeterminado es 67108864 (64 MiB).

sxg_cert_path

Una ruta absoluta en la que nginx generará y servirá el archivo de certificado codificado en CBOR. Pero asegúrate de que el respondedor OCSP para el certificado sea accesible desde tu servidor nginx para obtener respuestas OCSP. Esta directiva es opcional.

sxg_expiry_seconds

La duración de vida del archivo SXG generado en segundos. No debe ser mayor que 604800 (1 semana). Esta directiva es opcional. El valor predeterminado es 86400 (1 día).

sxg_fallback_host

El nombre de host de la URL de respaldo del archivo SXG generado. Esta directiva es opcional. El valor predeterminado es el parámetro del campo Host del encabezado de la solicitud HTTP.

Ejemplo de Configuración

load_module "modules/ngx_http_sxg_filter_module.so";

http {
    upstream app {
        server 127.0.0.1:3000;
    }
    include       mime.types;
    default_type  application/octet-stream;
    subrequest_output_buffer_size   4096k;

    server {
        listen    80;
        server_name  example.com;

        sxg on;
        sxg_certificate     /path/to/certificate-ecdsa.pem;
        sxg_certificate_key /path/to/private-key-ecdsa.key;
        sxg_cert_url        https://cdn.test.com/example.com.cert.cbor;
        sxg_validity_url    https://example.com/validity/resource.msg;
        sxg_expiry_seconds 604800;
        sxg_fallback_host  example.com;

        location / {
            proxy_pass http://app;
        }
    }
}

Soporte de Subrecursos

El módulo nginx-sxg-module incluye automáticamente las firmas de subrecursos en sus respuestas, permitiendo a los usuarios finales prefetch de él desde el distribuidor. Al encontrar una entrada link: rel="preload" en el encabezado de respuesta HTTP del upstream, este complemento recogerá el recurso especificado para el upstream y añadirá rel="allowed-alt-sxg";header-integrity="sha256-...." a la respuesta HTTP original automáticamente. Esta funcionalidad es esencial para la precarga de subrecursos para una navegación más rápida entre sitios.

GitHub

Puedes encontrar consejos adicionales de configuración y documentación para este módulo en el repositorio de GitHub para nginx-module-sxg.