$ssl_ech_outer_server_name

$ssl_ech_outer_server_name возвращает внешнее имя сервера, используемое в Encrypted ClientHello для текущего SSL-соединения. — NGINX Core (HTTP)

$ssl_ech_outer_server_name NGINX Core (HTTP)

Описание

Переменная `$ssl_ech_outer_server_name` — уникальная возможность, доступная в SSL-модуле NGINX, которая фиксирует внешнее имя сервера, предоставленное клиентом во время TLS-рукопожатия при использовании расширения Encrypted ClientHello (ECH). Это позволяет клиентам сохранять приватность относительно реального сервера, к которому они подключаются, одновременно давая серверам возможность решать, как обрабатывать запросы на основе предполагаемого имени назначения сервера. Эта переменная устанавливается во время SSL-рукопожатия, когда клиент согласовывает расширение ECH. Если клиент включает внешнее имя сервера в своём Encrypted ClientHello, эта переменная будет содержать это имя. Типичные значения для этой переменной — доменные имена или заголовки хоста, такие как 'www.example.com' или 'api.example.com', в зависимости от реализации ECH на стороне клиента. Если внешнее имя сервера не предоставлено или согласование ECH не удалось, переменная будет пустой. Использование этой переменной особенно полезно для приложений, которые хотят отвечать по-разному в зависимости от исходного предполагаемого назначения клиента, при этом сохраняя определённый уровень приватности в коммуникации. Однако для этой функциональности требуется совместимая настройка клиента для использования ECH, что означает, что не все запросы будут включать эту переменную в зависимости от конфигурации клиента во время рукопожатия.

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

server {
    listen 443 ssl;
    server_name example.com;
    ssl_certificate /path/to/cert.pem;
    ssl_certificate_key /path/to/cert.key;
    location / {
        if ($ssl_ech_outer_server_name) {
            add_header X-Outer-Server-Name $ssl_ech_outer_server_name;
        }
    }
}

Подсистема

http

Кэшируется

Да

Контексты

http, server, location, if

Убедитесь, что версия NGINX поддерживает Encrypted ClientHello и правильно настроена для SSL/TLS, чтобы корректно захватывать эту переменную.

Если клиент не поддерживает ECH или не отправляет outer server name, переменная не будет установлена, что может привести к непредвиденному поведению конфигурации.