ssl_alpn

Директива `ssl_alpn` задаёт протоколы Application-Layer Protocol Negotiation (ALPN) для Stream-соединений в NGINX. — NGINX Stream Core

ssl_alpn
streamstream server
Синтаксисssl_alpn protocol1 protocol2 ...;
По умолчаниюnone
Контекстstream, stream server
МодульNGINX Stream Core
Аргументы1+

Описание

Директива `ssl_alpn` имеет решающее значение для определения ALPN-протоколов, используемых модулем Stream в NGINX. Позволяя клиентам согласовывать, какой прикладной протокол использовать во время SSL/TLS рукопожатия, `ssl_alpn` обеспечивает оптимальную производительность и совместимость для различных протоколов, таких как HTTP/2 и HTTP/1.1. При задании директива принимает одно или несколько имён протоколов в качестве аргументов, которые используются в процессе согласования ALPN. Эта директива должна находиться в допустимых контекстах stream или stream server, что означает, что она используется специально для соединений TCP или UDP, а не для HTTP. Если указано несколько протоколов, они должны перечисляться в порядке предпочтения, поскольку сервер будет представлять их клиенту в той последовательности. Кроме того, важно отметить, что если клиент не поддерживает ни один из предложенных протоколов, соединение может завершиться неудачей, поэтому необходима правильная настройка и проверка поддержки, чтобы обеспечить успешное согласование протокола клиентом. Также убедитесь, что версия OpenSSL совместима с ALPN, чтобы эта директива работала корректно.

Пример конфига

stream {
    server {
        listen 443 ssl;
        ssl_certificate /path/to/cert.pem;
        ssl_certificate_key /path/to/key.pem;
        ssl_alpn h2 http/1.1;
    }
}

Убедитесь, что указанные протоколы поддерживаются клиентом, чтобы избежать сбоев соединения.

Всегда проверяйте конфигурации после изменения настроек ALPN на предмет проблем совместимости или ответов сервера.

Убедитесь, что ваша версия OpenSSL скомпилирована с поддержкой ALPN.