$ssl_server_name

Переменная $ssl_server_name содержит имя сервера, указанное в директиве 'server_name', которое совпадает с запросом во время SSL-рукопожатия. — NGINX Core (HTTP)

$ssl_server_name NGINX Core (HTTP)

Описание

Переменная $ssl_server_name устанавливается в контексте NGINX server block с включённым SSL и в основном используется для определения того, какой виртуальный сервер обслуживает запрос на основе его имени сервера во время фазы SSL handshake. Когда клиент инициирует SSL-соединение с NGINX, сервер сравнивает запрошенное имя хоста с настроенными директивами 'server_name' в каждом server block. Используется первый совпавший сервер, и соответствующее имя сервера сохраняется в переменной $ssl_server_name. Если совпадающее имя сервера не найдено, $ssl_server_name будет пустой, и вместо него может использоваться имя сервера по умолчанию (если оно настроено). Эта переменная ведёт себя аналогично $server_name; однако она заполняется специально во время процесса SSL handshake, что позволяет использовать её для различных целей, таких как логирование, контроль доступа и формирование ответов на основе запрошенного имени хоста. Типичными значениями для $ssl_server_name будут DNS-имена, настроенные в server blocks, например 'example.com' или 'www.example.com'.

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

server {
    listen 443 ssl;
    server_name example.com www.example.com;
    ssl_certificate /path/to/cert.pem;
    ssl_certificate_key /path/to/key.pem;
    location / {
        add_header X-SSL-Server-Name "$ssl_server_name";
    }
}

Подсистема

http

Кэшируется

Да

Контексты

http, server, location, if

Убедитесь, что SSL включён для серверного блока, используя 'listen 443 ssl;'.

Если нет совпадающего server_name, переменная будет пустой; будьте осторожны при настройке сервера, чтобы избежать путаницы.

$ssl_server_name нельзя использовать в конфигурациях, не связанных с SSL. Убедитесь, что контекст корректен.