sxg: Поддержка подписанных HTTP обменов (SXG) для NGINX
Установка
Вы можете установить этот модуль в любой дистрибутив, основанный на 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, выпущенный 11 марта 2021 года.
Поддержка подписанных HTTP обменов (SXG) для nginx. Nginx будет преобразовывать ответы от
внешнего приложения в SXG, когда запросы клиента содержат HTTP-заголовок Accept: application/signed-exchange;v=b3 с наивысшим значением qvalue.
Конфигурация
Модуль Nginx-SXG требует конфигурации в nginx.
Директивы
sxg
Флаг активации модуля SXG.
on: Включить этот плагин.off: Отключить этот плагин.
Значение по умолчанию — off.
sxg_certificate
Полный путь к файлу сертификата. Сертификат должен соответствовать всем условиям ниже.
- Имеет расширение
CanSignHttpExchanges. - Использует ECDSA256 или ECDSA384.
Эта директива всегда обязательна.
sxg_certificate_key
Полный путь к закрытому ключу для сертификата.
Эта директива всегда обязательна.
sxg_cert_url
URL для файла сертификата в формате CBOR. Протокол должен быть https.
Эта директива всегда обязательна.
sxg_validity_url
URL для файла информации о действительности. Он должен быть https и иметь тот же источник, что и веб-сайт.
Эта директива всегда обязательна.
sxg_max_payload
Максимальный размер тела HTTP, из которого этот модуль может генерировать SXG. Значение по умолчанию — 67108864 (64 MiB).
sxg_cert_path
Абсолютный путь, в котором nginx будет генерировать и обслуживать файл сертификата в формате CBOR. Но убедитесь, что OCSP-ответчик для сертификата доступен с вашего сервера nginx для получения OCSP-ответов. Эта директива является необязательной.
sxg_expiry_seconds
Срок действия сгенерированного файла SXG в секундах. Он не должен превышать 604800 (1 неделя). Эта директива является необязательной. Значение по умолчанию — 86400 (1 день).
sxg_fallback_host
Имя хоста резервного URL сгенерированного файла SXG. Эта директива является необязательной. Значение по умолчанию — параметр Host заголовка HTTP-запроса.
Пример конфигурации
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 автоматически включает подписи субресурсов в свои ответы, позволяя конечным пользователям предварительно загружать их от дистрибьютора. При нахождении записи link: rel="preload" в заголовке HTTP-ответа от upstream этот плагин соберет указанный ресурс к upstream и автоматически добавит rel="allowed-alt-sxg";header-integrity="sha256-...." к оригинальному HTTP-ответу. Эта функциональность необходима для предварительной загрузки субресурсов для более быстрой навигации между сайтами.
GitHub
Вы можете найти дополнительные советы по конфигурации и документацию для этого модуля в репозитории GitHub для nginx-module-sxg.