proxy_ssl_name

proxy_ssl_name 指令指定代理请求的 SSL 主机名。 — NGINX HTTP Core

proxy_ssl_name
httpserverlocation
语法proxy_ssl_name string;
默认值none
上下文http, server, location
模块NGINX HTTP Core
参数1

说明

proxy_ssl_name 指令用于 NGINX 的 HTTP 模块,用于设置代理 SSL 请求中 'Host' 首部的值。当后端服务器使用 SNI (Server Name Indication) 扩展来处理 SSL 时,该主机值非常重要,SNI 允许在同一 IP 地址上提供多个 SSL 证书。 通过配置 proxy_ssl_name,可以确保在发起请求时向后端服务器发送正确的主机名。该指令接受一个参数,即 NGINX 在转发 SSL 请求时使用的主机名。它可以放在 http、server 或 location 上下文级别,从而在配置的不同作用域中实现对 SSL 行为的细粒度控制。 例如,如果你有多个 upstream 服务器,需要不同的 SSL 设置或主机名来成功完成 TLS 握手,则可以在每个上下文中为 proxy_ssl_name 指定适当的值。如果未设置,NGINX 将发送来自客户端请求的原始 Host 首部,这对于 upstream 服务器的设置可能并不总是正确,可能导致安全连接失败。

配置示例

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

确保所提供的 hostname 与 backend server 上的某个 SSL 证书匹配,以防止 SSL 握手失败。

如果在 SSL 通信中使用不正确的 hostnames,配置错误可能会导致安全漏洞。