根据春哥的这个 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 ,移除连接池,对性能是否会影响较大?

    20 days later

    所以想跟您确认一下 @zhuizhuhaomeng ,目前在 OpenResty 上 proxy_ssl_session_reuse 打开这个开关,不在 upstream 块中写 keepalive ,且使用 balancer_by_lua 进行负载均衡,是否不会起到 SSL 连接复用的效果?

    因为之前部分客户遇到过因为 SSL 连接复用导致的问题,但貌似关闭 proxy_ssl_session_reuse 就好了,并没有去额外调节 upstream 中的 keepalive ,因此有这个疑惑。

      zhuizhuhaomeng

      因此目前若不想进行 SSL 连接复用,只需将 upstream 的 keepalive 移除是么?

        Write a Reply...