Перейти к содержанию

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.