$ssl_ech_outer_server_name

$ssl_ech_outer_server_name 返回在当前 SSL 连接的 Encrypted ClientHello 中使用的外层服务器名称。 — NGINX Core (HTTP)

$ssl_ech_outer_server_name NGINX Core (HTTP)

说明

`$ssl_ech_outer_server_name` 变量是 NGINX 的 SSL 模块中的一个独特功能,当客户端在 TLS 握手期间使用 Encrypted ClientHello (ECH) 扩展时,该变量会捕获客户端提供的外层服务器名称。这样可以让客户端在一定程度上对其实际连接的服务器保持隐私,同时仍然使服务器能够根据意图的目标服务器名称来决定如何处理请求。 当客户端协商 ECH 扩展时,该变量会在 SSL 握手期间被设置。如果客户端在其 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 或未发送外层服务器名称,则该变量将不会被设置,可能导致意外的配置行为。