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.