SNI 的英文全称是 Server Name Indication。SNI 是 TLS 协议的扩展。在同一台服务器上部署了多个站点的场景下,SNI 解决了以下问题:
如果客户端使用不安全的 HTTP 协议与服务端通信,在数据传输时,服务端通过客户端请求中的 Host 头部判断客户端需要访问的站点。但是如果客户端使用 HTTPS 协议连接服务器,在数据传输开始前有一个 TLS 握手的过程。在该过程中,客户端还未传递 Host 头部给服务器。因此服务器无法获得 Host 字段信息来判断需要发送给客户端的站点证书。此时,客户端可以使用 SNI 头部告知服务端需要的目标站点。这样服务端就能在 TLS 握手阶段发送相应的证书给客户端了。
本文讨论的 SNI 是火山引擎内容分发网络(CDN)的 "回源 SNI" 配置。 "回源 SNI" 指定了 CDN 在使用 HTTPS 协议向源站请求内容时需要访问的源站域名。如果您的加速域名启用了 HTTPS,系统有默认的 "回源 SNI" 设置。默认的 "回源 SNI" 设置如下:
但是在某些场景下,"回源 SNI" 与 "回源 Host" 不相同。如果您有这样的场景,可以在 CDN 控制台配置 "回源 SNI"。