ssl_preread
在 NGINX 中为 TCP 流启用对 SSL/TLS 握手的解析。 — NGINX Stream Core
ssl_preread
streamstream server
语法ssl_preread on | off;
默认值off
上下文stream, stream server
模块NGINX Stream Core
参数flag
说明
`ssl_preread` 指令在 NGINX Stream 模块中用于处理通过 SSL/TLS 保护的 TCP 流。该指令允许 NGINX 执行初始 SSL 握手处理,从而能够根据客户端在握手期间发送的 Server Name Indication (SNI) 扩展确定目标后端服务器。 当启用 `ssl_preread` 时,NGINX 可以检查传入的 SSL 握手以提取 SNI 信息,这在根据客户端指定的主机名将流量路由到多个后端时尤其有用。如果将 `ssl_preread` 指令设置为 `on`,则会解析 SSL 握手,SNI 将可在配置中进一步使用,例如在 `proxy_pass` 指令中或用于影响负载均衡。这对于在同一 IP 地址上托管多个启用 SSL 的域的应用非常重要。 需要注意的是,`ssl_preread` 指令本身并不执行 SSL termination;它仅使 NGINX 能够从 SSL 握手中解析出 SNI。用户通常将该指令与其他指令或后端配置结合使用,以有效管理 SSL 流量。
配置示例
stream {
server {
listen 443;
proxy_pass backend;
ssl_preread on;
}
upstream backend {
server backend1.example.com:443;
server backend2.example.com:443;
}
}⚠
确保在你的 NGINX 构建中编译了 SSL/TLS 支持,因为 `ssl_preread` 依赖于它。
⚠
不要在 non-SSL 流上使用 `ssl_preread`,否则行为将无法预测。
⚠
基于 SNI 的路由在客户端未发送 SNI 时可能无法按预期工作。