Nginx proxy_ssl_name 在多证书后端回源时,如何配置实现正确域名解析?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1049个文字,预计阅读时间需要5分钟。
很抱歉,您提供的文本似乎不完整,我无法直接进行改写。请提供完整的文本内容,以便我能够根据您的要求进行改写。
为什么 proxy_ssl_name 必须配合 proxy_ssl_server_name on 才生效
默认情况下,Nginx 与 HTTPS 后端建连时根本不会发送 SNI 字段——proxy_ssl_server_name 默认是 off。哪怕你写了 proxy_ssl_name $host,只要没开这个开关,SNI 就不会出现在 TLS ClientHello 里,上游压根收不到域名信息。
开启后,Nginx 才会调用 SSL_set_tlsext_host_name() 把 proxy_ssl_name 的值塞进 SNI 扩展。所以这两条必须成对出现:
-
proxy_ssl_server_name on;—— 启用 SNI 发送能力 -
proxy_ssl_name $host;—— 指定要发哪个域名(推荐用$host,已标准化、不含端口)
单独写其中一条,等于没配。
proxy_ssl_name 写死 vs 动态变量:什么时候能硬编码
写死 proxy_ssl_name "api.example.com"; 只在一种场景安全:所有请求都指向同一后端域名,且该域名在上游证书的 SAN 中明确存在。一旦后端是多租户架构(比如 shop-a.com、shop-b.com 共用一个 IP),就必须用变量。
本文共计1049个文字,预计阅读时间需要5分钟。
很抱歉,您提供的文本似乎不完整,我无法直接进行改写。请提供完整的文本内容,以便我能够根据您的要求进行改写。
为什么 proxy_ssl_name 必须配合 proxy_ssl_server_name on 才生效
默认情况下,Nginx 与 HTTPS 后端建连时根本不会发送 SNI 字段——proxy_ssl_server_name 默认是 off。哪怕你写了 proxy_ssl_name $host,只要没开这个开关,SNI 就不会出现在 TLS ClientHello 里,上游压根收不到域名信息。
开启后,Nginx 才会调用 SSL_set_tlsext_host_name() 把 proxy_ssl_name 的值塞进 SNI 扩展。所以这两条必须成对出现:
-
proxy_ssl_server_name on;—— 启用 SNI 发送能力 -
proxy_ssl_name $host;—— 指定要发哪个域名(推荐用$host,已标准化、不含端口)
单独写其中一条,等于没配。
proxy_ssl_name 写死 vs 动态变量:什么时候能硬编码
写死 proxy_ssl_name "api.example.com"; 只在一种场景安全:所有请求都指向同一后端域名,且该域名在上游证书的 SAN 中明确存在。一旦后端是多租户架构(比如 shop-a.com、shop-b.com 共用一个 IP),就必须用变量。

