proxy_ssl_server_name

Директива `proxy_ssl_server_name` включает SNI для проксируемых запросов, позволяя NGINX отправлять имя сервера в SSL handshake. — NGINX HTTP Core

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

Описание

Директива `proxy_ssl_server_name` управляет тем, включается ли поле Server Name Indication (SNI) в SSL/TLS requests, которые NGINX проксирует на другой сервер. Когда установлено в `on`, NGINX включает имя хоста из заголовка `Host` в SSL handshake, что важно для серверов, использующих несколько SSL-сертификатов для разных имён хостов на одном и том же IP-адресе. Это особенно актуально в сценариях, когда несколько доменов размещены на одном сервере с общими IP-адресами; правильный сертификат может быть выбран на основе информации SNI, предоставленной клиентом. Директиву можно использовать в нескольких контекстах: блоках `http`, `server` и `location`, и она ожидает один аргумент — флаг. Установка директивы в `on` включает SNI, установка в `off` отключает его. По умолчанию директива установлена в `off`, то есть SNI не будет использоваться, если явно не включён. Важно отметить, что если сервер бэкенда не поддерживает SNI, правильный сертификат может не быть подан, что потенциально приведёт к ошибкам SSL-подключения. Эта директива особенно полезна при работе с несколькими SSL-сертификатами на сервере бэкенда, поскольку она позволяет NGINX динамически выбирать соответствующий сертификат на основе запрошенного имени хоста, тем самым обеспечивая правильную SSL termination и повышая общую безопасность проксируемых соединений.

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

location /api {
    proxy_pass https://backend.example.com;
    proxy_ssl_server_name on;
}

Убедитесь, что сервер бэкенда поддерживает SNI; в противном случае установка этой директивы в 'on' может привести к ошибкам SSL.

Проксирование на устаревший сервер, который некорректно обрабатывает SNI, может вызвать проблемы, если эта директива включена.