Aller au contenu

sxg: Support de l'échange HTTP signé (SXG) pour NGINX

Installation

Vous pouvez installer ce module dans n'importe quelle distribution basée sur RHEL, y compris, mais sans s'y limiter :

  • RedHat Enterprise Linux 7, 8, 9 et 10
  • CentOS 7, 8, 9
  • AlmaLinux 8, 9
  • Rocky Linux 8, 9
  • Amazon Linux 2 et 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

Activez le module en ajoutant ce qui suit en haut de /etc/nginx/nginx.conf :

load_module modules/ngx_http_sxg_filter_module.so;

Ce document décrit nginx-module-sxg v4.5 publié le 11 mars 2021.


Support de l'échange HTTP signé (SXG) pour nginx. Nginx convertira les réponses de l'application en amont en SXG lorsque les requêtes des clients incluent l'en-tête HTTP Accept: application/signed-exchange;v=b3 avec la valeur q la plus élevée.

Configuration

Le module Nginx-SXG nécessite une configuration sur nginx.

Directives

sxg

Drapeau d'activation du module SXG.

  • on: Activer ce plugin.
  • off: Désactiver ce plugin.

La valeur par défaut est off.

sxg_certificate

Chemin complet vers le fichier de certificat. Le certificat doit respecter toutes les conditions ci-dessous.

  • A l'extension CanSignHttpExchanges.
  • Utilise ECDSA256 ou ECDSA384.

Cette directive est toujours requise.

sxg_certificate_key

Chemin complet vers la clé privée du certificat.

Cette directive est toujours requise.

sxg_cert_url

URL pour le fichier de certificat encodé en CBOR. Le protocole doit être https.

Cette directive est toujours requise.

sxg_validity_url

URL pour le fichier d'informations de validité. Il doit être https et doit avoir la même origine que le site web.

Cette directive est toujours requise.

sxg_max_payload

Taille maximale du corps HTTP à partir de laquelle ce module peut générer SXG. La valeur par défaut est 67108864 (64 MiB).

sxg_cert_path

Un chemin absolu dans lequel nginx générera et servira le fichier de certificat encodé en CBOR. Mais assurez-vous que le répondant OCSP pour le certificat est accessible depuis votre serveur nginx pour obtenir des réponses OCSP. Cette directive est optionnelle.

sxg_expiry_seconds

La durée de vie du fichier SXG généré en secondes. Elle ne doit pas dépasser 604800 (1 semaine). Cette directive est optionnelle. La valeur par défaut est 86400 (1 jour).

sxg_fallback_host

Le nom d'hôte de l'URL de secours du fichier SXG généré. Cette directive est optionnelle. La valeur par défaut est le paramètre Host de l'en-tête de la requête HTTP.

Exemple de configuration

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;
        }
    }
}

Support des sous-ressources

Le module nginx-sxg-module inclut automatiquement les signatures des sous-ressources dans ses réponses, permettant aux utilisateurs finaux de les précharger depuis le distributeur. Lorsqu'il trouve une entrée link: rel="preload" dans l'en-tête de réponse HTTP de l'amont, ce plugin collectera la ressource spécifiée vers l'amont et ajoutera rel="allowed-alt-sxg";header-integrity="sha256-...." à la réponse HTTP originale automatiquement. Cette fonctionnalité est essentielle pour le préchargement des sous-ressources afin d'accélérer la navigation inter-sites.

GitHub

Vous pouvez trouver des conseils de configuration supplémentaires et de la documentation pour ce module dans le dépôt GitHub pour nginx-module-sxg.