关于 ssl_certificate_by_lua 适配到 stream 模块的问题

191 views
Skip to first unread message

adu...@gmail.com

unread,
Feb 5, 2018, 3:41:15 AM2/5/18
to openresty


大家好 ,因为一个比较特殊的需求,我需要将 ssl_certificate_by_lua 适配到 stream 模块。前期工作已经做完了,(主要是添加 ngx_stream_lua_ssl_certby.h/c  ,ssl_stream.lua 文件,以及模块的配置加载 )


但是现在在实际运行的时候出现了一个问题就是   无法加载 ffi 函数~~请教下大家,在哪里地方有所遗漏。

nginx 配置如下:

stream {
server {
listen 443 ssl transparent;

ssl_certificate us.pem;
ssl_certificate_key us.key;

ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;

ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;

ssl_certificate_by_lua_block {
local ssl = require "ngx.ssl_stream"

local ok, err = ssl.clear_certs()
if not ok then
ngx.log(ngx.ERR, "failed to clear existing (fallback) certificates")
return ngx.exit(ngx.ERROR)
end

ngx.log(ngx.ERR,"run ok")
}
content_by_lua_file stream_proxy.lua;
}




}


运行 错误如下 :

2018/02/05 16:08:58 [error] 3705#0: *1 lua entry thread aborted: runtime error: /usr/local/openresty/lualib/ngx/ssl_stream.lua:78: /usr/local/openresty/luajit/lib/libluajit-5.1.so.2: undefined symbol: ngx_stream_lua_ffi_ssl_clear_certs stack traceback: coroutine 0: [C]: in function '__index' /usr/local/openresty/lualib/ngx/ssl_stream.lua:78: in function 'clear_certs' ssl_certificate_by_lua:8: in function <ssl_certificate_by_lua:1> while loading SSL certificate by lua, client: 127.0.0.1, server: 0.0.0.0:443 2018/02/05 16:08:58 [error] 3705#0: *1 lua entry thread aborted: runtime error: /usr/local/openresty/lualib/ngx/ssl_stream.lua:78: /usr/local/openresty/luajit/lib/libluajit-5.1.so.2: undefined symbol: ngx_stream_lua_ffi_ssl_clear_certs stack traceback: coroutine 0: [C]: in function '__index' /usr/local/openresty/lualib/ngx/ssl_stream.lua:78: in function 'clear_certs' ssl_certificate_by_lua:8: in function <ssl_certificate_by_lua:1> while loading SSL certificate by lua, client: 127.0.0.1, server: 0.0.0.0:443 2018/02/05 16:08:58 [error] 3705#0: *1 lua entry thread aborted: runtime error: /usr/local/openresty/lualib/ngx/ssl_stream.lua:78: /usr/local/openresty/luajit/lib/libluajit-5.1.so.2: undefined symbol: ngx_stream_lua_ffi_ssl_clear_certs stack traceback: coroutine 0: [C]: in function '__index' /usr/local/openresty/lualib/ngx/ssl_stream.lua:78: in function 'clear_certs' ssl_certificate_by_lua:8: in function <ssl_certificate_by_lua:1> while loading SSL certificate by lua, client: 127.0.0.1, server: 0.0.0.0:443












ngx_stream_lua_ssl_certby.c
ngx_stream_lua_ssl_certby.h
ssl_stream.lua

adu...@gmail.com

unread,
Feb 7, 2018, 9:59:37 PM2/7/18
to openresty



问题解决了,是因为  ngx_stream_lua_common.h  里面有宏定义   #define NGX_LUA_NO_FFI_API
导致在  ngx_stream_lua_ssl_certby.c 里面 ffi 函数未被编译。



在 2018年2月5日星期一 UTC+8下午4:41:15,adu...@gmail.com写道:
Reply all
Reply to author
Forward
0 new messages