我通过ssl_session_store_by_lua_block存储session到文件和lua_shared_dict中都正常,但是往redis存储的过程中发现ssl_session_store_by_lua中不允许tcp API,求指教如何解决。
ssl_session_store_by_lua_block {
local redis = require "resty.redis"
local red = redis:new()
red:set_timeout(1000)
local ok, err = red:connect("127.0.0.1", 6379)
if not ok then
ngx.say("failed to connect: ", err)
return
end
local ssl_sess = require "ngx.ssl.session"
local sess_id, err = ssl_sess.get_session_id()
ngx.log(ngx.INFO, "store session ID: ", sess_id)
if not sess_id then
ngx.log(ngx.ERR, "failed to get session ID: ", err)
return
end
local sess, err = ssl_sess.get_serialized_session()
if not sess then
ngx.log(ngx.ERR, "failed to get SSL session for ID ", sess_id, ": ", err)
return
end
local sess, err = red:set(sess_id)
if not sess then
ngx.log(ngx.ERR, "failed to set session to redis: ", err)
return
end
red:close()
}
2016/10/20 14:11:17 [error] 25538#0: *8 failed to run session_store_by_lua*: ...cal/tengine/conf/lib/lua-resty-redis/lib/resty/redis.lua:59: API disabled in the context of ssl_session_store_by_lua*
stack traceback:
[C]: in function 'tcp'
...cal/tengine/conf/lib/lua-resty-redis/lib/resty/redis.lua:59: in function 'new'
ssl_session_store_by_lua_block:3: in function <ssl_session_store_by_lua_block:1>, context: ssl_session_store_by_lua*, client: 10.0.0.1, server: 0.0.0.0:443