Pular para conteúdo

sxg: Suporte a Troca de HTTP Assinada (SXG) para NGINX

Instalação

Você pode instalar este módulo em qualquer distribuição baseada em RHEL, incluindo, mas não se limitando a:

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

Ative o módulo adicionando o seguinte no topo de /etc/nginx/nginx.conf:

load_module modules/ngx_http_sxg_filter_module.so;

Este documento descreve o nginx-module-sxg v4.5 lançado em 11 de março de 2021.


Suporte a Troca de HTTP Assinada (SXG) para nginx. O Nginx converterá respostas da aplicação upstream em SXG quando as solicitações do cliente incluírem o cabeçalho HTTP Accept: application/signed-exchange;v=b3 com o maior valor de q.

Configuração

O módulo Nginx-SXG requer configuração no nginx.

Diretrizes

sxg

Flag de ativação do módulo SXG.

  • on: Ativar este plugin.
  • off: Desativar este plugin.

O valor padrão é off.

sxg_certificate

Caminho completo para o arquivo de certificado. O certificado deve atender a todas as condições abaixo.

  • Possui a extensão CanSignHttpExchanges.
  • Usa ECDSA256 ou ECDSA384.

Esta diretiva é sempre necessária.

sxg_certificate_key

Caminho completo para a chave privada do certificado.

Esta diretiva é sempre necessária.

sxg_cert_url

URL para o arquivo de certificado codificado em CBOR. O protocolo deve ser https.

Esta diretiva é sempre necessária.

sxg_validity_url

URL para o arquivo de informações de validade. Deve ser https e deve ter a mesma origem que o site.

Esta diretiva é sempre necessária.

sxg_max_payload

Tamanho máximo do corpo HTTP que este módulo pode gerar SXG. O valor padrão é 67108864 (64 MiB).

sxg_cert_path

Um caminho absoluto no qual o nginx gerará e servirá o arquivo de certificado codificado em CBOR. Mas certifique-se de que o respondedor OCSP para o certificado seja acessível a partir do seu servidor nginx para obter respostas OCSP. Esta diretiva é opcional.

sxg_expiry_seconds

A duração de vida do arquivo SXG gerado em segundos. Não deve ser maior que 604800 (1 semana). Esta diretiva é opcional. O valor padrão é 86400 (1 dia).

sxg_fallback_host

O nome do host da URL de fallback do arquivo SXG gerado. Esta diretiva é opcional. O valor padrão é o parâmetro do campo Host do cabeçalho da solicitação HTTP.

Exemplo de Configuração

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

Suporte a Subrecursos

O nginx-sxg-module inclui automaticamente assinaturas de subrecursos em suas respostas, permitindo que os usuários finais os pré-busquem do distribuidor. Ao encontrar a entrada link: rel="preload" no cabeçalho da resposta HTTP do upstream, este plugin coletará o recurso especificado para o upstream e anexará rel="allowed-alt-sxg";header-integrity="sha256-...." à resposta HTTP original automaticamente. Esta funcionalidade é essencial para o pré-carregamento de subrecursos para uma navegação mais rápida entre sites.

GitHub

Você pode encontrar dicas adicionais de configuração e documentação para este módulo no repositório do GitHub para nginx-module-sxg.