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

sxg: Поддержка подписанных HTTP Exchange (SXG) для NGINX

Установка на Debian/Ubuntu

Эти документы относятся к пакету APT nginx-module-sxg, предоставляемому репозиторием GetPageSpeed Extras.

  1. Настройте репозиторий APT, как описано в настройке репозитория APT.
  2. Установите модуль:
sudo apt-get update
sudo apt-get install nginx-module-sxg

Warning

Этот модуль еще не опубликован как nginx-module-sxg в репозиториях APT. Следите за обновлениями или напишите на support@getpagespeed.com, чтобы запросить его.


Поддержка подписанных HTTP Exchange (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 от вышестоящего сервера, этот плагин соберет указанный ресурс к вышестоящему и автоматически добавит rel="allowed-alt-sxg";header-integrity="sha256-...." к оригинальному HTTP-ответу. Эта функциональность является важной для предварительной загрузки субресурсов для более быстрого кросс-сайтового навигации.