grpc_ssl_server_name

Включает использование имени сервера в SSL‑рукопожатии gRPC для сопоставления с Server Name Indication (SNI). — NGINX HTTP Core

grpc_ssl_server_name
httpserverlocation
Синтаксисgrpc_ssl_server_name on | off;
По умолчаниюoff
Контекстhttp, server, location
МодульNGINX HTTP Core
Аргументыflag

Описание

Директива `grpc_ssl_server_name` используется в конфигурациях NGINX, чтобы включить добавление имени сервера в SSL‑рукопожатие для gRPC‑соединений. Это позволяет NGINX удовлетворить требование клиента Server Name Indication (SNI), что помогает правильно направлять соединение к соответствующему бэкенд‑серверу на основе указанного имени хоста. Когда эта директива включена, сервер может обслуживать несколько SSL‑сайтов на одном и том же IP‑адресе, различая их по доменным именам. Директива может быть указана в различных контекстах, включая `http`, `server` и `location`, что обеспечивает гибкость её применения в файле конфигурации. При установке этой директивы в 'on' сервер NGINX будет использовать имя сервера, включённое в gRPC‑запрос, для своей SSL‑конфигурации, что позволит ему корректно выбирать соответствующий набор SSL‑сертификатов, совпадающих с доменным именем. Это особенно полезно в средах, где на одном сервере размещается несколько gRPC‑сервисов. Важно отметить, что включение `grpc_ssl_server_name` может потребовать тщательного управления вашими SSL‑сертификатами, чтобы обеспечить их правильную настройку для работы с SNI. Если используется несколько доменов, убедитесь, что они надёжно защищены действительными SSL‑сертификатами для обеспечения надёжной связи. Эта функция подчёркивает интероперабельность с gRPC‑клиентами, которые ожидают поддержку SNI для корректной работы.

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

server {
    listen 443 ssl;
    grpc_ssl_server_name on;
    ssl_certificate /path/to/certificate.pem;
    ssl_certificate_key /path/to/key.pem;
}

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

Если перед NGINX используется балансировщик нагрузки, убедитесь, что он поддерживает SNI и правильно пересылает имя сервера.

Эта директива не поддерживается в чисто HTTP-контекстах, а только в конфигурациях с поддержкой https.