ssl_session_cache如何支持nginx集群?

535 views
Skip to first unread message

jianchao

unread,
Apr 9, 2016, 3:31:10 AM4/9/16
to openresty讨论
    我现在在做一些有关https方面的优化工作,需要在nginx上对TLS的复用率进行提高,但是nginx的ssl_session_cache只支持单机,无法在nginx集群间进行共享,所以需要做分布式 Session Cache的方案,需要用redis进行缓存。但是,我目前对redis中去缓存哪些内容不太清楚,如session id,密钥等?nginx的ssl_session_cache的缓存机制也不太明白。假如去redis中读取了缓存的内容,如何去打断nginx进行建连,使用我们缓存的会话?是否可以在”ssl_certificate_by_lua“模块中进行处理?如何进行处理?
    我给春哥发了一封邮件,春哥回复我OpenResty 中开源的 ssl_session_fetch_by_lua* 和ssl_session_store_by_lua* 正是针对 SSL session 的非阻塞的分布式缓存需求的,估计要在这个月或下个月放出来。
    希望大家有类似需求和已经实现的伙伴们分享下。


 

Jianqiang Wang

unread,
Apr 11, 2016, 1:45:25 AM4/11/16
to openresty
我做过类似的方案。
TLS  的 Session 的复用包括 Session ID  和 Session Ticket 的方式,我的思路和百度,Cloudflare 的类似。对于 Session ID 使用的是 Nginx  + Redis Proxy + Redis Cluster  ,需要修改 OpenSSL 为异步,修改原来 Nginx 中对 Session ID 的处理逻辑;Session Ticket 的方案类似 Twitter 但优于 Twitter 的方案,所有前端共享一个 Ticket Key , 且周期性的更新。 由于公司的历史原因,这部分工作我是在 Tengine 上做的,如果你们的接入前端没有复杂的背景(各种历史模块之类的)的话,考虑到开发周期,不如你直接等 OpenResty 开源 ssl_session_fetch_by_lua 和  ssl_session_store_by_lua 这两个 directive 吧。

jianchao

unread,
Apr 11, 2016, 3:25:00 AM4/11/16
to open...@googlegroups.com



    非常感谢你的建议,改nginx源码有点儿太复杂了,期待OpenResty的命令尽早发布了!
--
--
邮件来自列表“openresty”,专用于技术讨论!
订阅: 请发空白邮件到 openresty+subs...@googlegroups.com
发言: 请发邮件到 open...@googlegroups.com
退订: 请发邮件至 openresty+unsub...@googlegroups.com
归档: http://groups.google.com/group/openresty
官网: http://openresty.org/
仓库: https://github.com/agentzh/ngx_openresty
教程: http://openresty.org/download/agentzh-nginx-tutorials-zhcn.html


 

Jianqiang Wang

unread,
Apr 11, 2016, 3:43:38 AM4/11/16
to openresty
如果你那边的量比较小的话,可以尝试下在 LVS 处用源地址 Hash ,然后增加单台前端 Nginx/Tengine 的 ssl_session_cache  shared:SSL 的配置,这样也是能变相提高 TLS Session 复用率的,但是有个潜在坑就是 IP 分布不均匀时可能会导致某台前端 Nginx 的 Load 偏高,嗯 具体方案你自己 trade-off 吧。 
Reply all
Reply to author
Forward
0 new messages