根据春哥的这个 issue 回复,ngx.balancer
不支持 SSL session 的重用。但是可以在 upstream
块中配置 keepalive
来达到 SSL 重用的效果,如这样的配置:
upstream abc {
server 127.0.0.1:9990;
balancer_by_lua_file balancer.lua;
keepalive 1024;
}
在实际使用中,我们发现如果后端使用 K8S 集群,通过 OpenResty 代理,在 balancer 阶段中选择同样源站 IP 和 端口,设置不同的 SNI (转发时设置 proxy_ssl_name
)。有很大概率会导致不同 SNI 的请求,在回源被进行重用,导致后端响应 404 (如 A 域名建立的 SSL 连接,OpenResty 把 B 域名的请求也用该连接发送,后端认为该连接的 SNI 应该是 A 域名,引起故障)。而且关闭 proxy_ssl_session_reuse
也没有好转。
想问下 OpenResty 是否能够支持基于 SNI 的 SSL session reuse 呢?如果不能,那么只能关闭 SSL session 重用,移除 upstream
中的 keepalive
,移除连接池,对性能是否会影响较大?