sxg: NGINX 的签名 HTTP 交换 (SXG) 支持
安装
您可以在任何基于 RHEL 的发行版中安装此模块,包括但不限于:
- RedHat Enterprise Linux 7、8、9 和 10
- CentOS 7、8、9
- AlmaLinux 8、9
- Rocky Linux 8、9
- Amazon Linux 2 和 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
通过在 /etc/nginx/nginx.conf 的顶部添加以下内容来启用模块:
load_module modules/ngx_http_sxg_filter_module.so;
本文档描述了 nginx-module-sxg v4.5,于 2021 年 3 月 11 日发布。
为 nginx 提供签名 HTTP 交换 (SXG) 支持。当客户端请求包含 Accept: application/signed-exchange;v=b3 HTTP 头并具有最高的 qvalue 时,nginx 将把来自上游应用程序的响应转换为 SXG。
配置
Nginx-SXG 模块需要在 nginx 中进行配置。
指令
sxg
SXG 模块的激活标志。
on: 启用此插件。off: 禁用此插件。
默认值为 off。
sxg_certificate
证书文件的完整路径。证书需要满足以下所有条件。
- 具有
CanSignHttpExchanges扩展。 - 使用 ECDSA256 或 ECDSA384。
此指令始终是必需的。
sxg_certificate_key
证书的私钥的完整路径。
此指令始终是必需的。
sxg_cert_url
CBOR 编码证书文件的 URL。协议必须为 https。
此指令始终是必需的。
sxg_validity_url
有效性信息文件的 URL。必须为 https,并且必须与网站具有相同的来源。
此指令始终是必需的。
sxg_max_payload
此模块可以生成 SXG 的最大 HTTP 主体大小。默认值为 67108864 (64 MiB)。
sxg_cert_path
nginx 将生成并提供 CBOR 编码证书文件的绝对路径。但请确保证书的 OCSP 响应者可以从您的 nginx 服务器访问,以获取 OCSP 响应。此指令是可选的。
sxg_expiry_seconds
生成的 SXG 文件的生命周期(以秒为单位)。不得大于 604800(1 周)。此指令是可选的。默认值为 86400(1 天)。
sxg_fallback_host
生成的 SXG 文件的回退 URL 的主机名。此指令是可选的。默认值为 HTTP 请求头的 Host 字段参数。
配置示例
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;
}
}
}
子资源支持
nginx-sxg-module 会自动在其响应中包含子资源的签名,允许最终用户从分发者处预取它。当在来自上游的 HTTP 响应头中找到 link: rel="preload" 条目时,此插件将收集指定的资源到上游,并自动将 rel="allowed-alt-sxg";header-integrity="sha256-...." 附加到原始 HTTP 响应中。此功能对于更快的跨站导航的子资源预加载至关重要。
GitHub
您可以在 nginx-module-sxg 的 GitHub 仓库 中找到此模块的其他配置提示和文档。