upyun / slardar

Updating your upstream list and run lua scripts without reloading Nginx.
493 stars 111 forks source link

when use ngx.socket.tcp, the function sslhandshake is a nil #19

Open oliveryunchang opened 7 years ago

oliveryunchang commented 7 years ago

when i use (tcpsock:sslhandshake)[https://github.com/openresty/lua-nginx-module#tcpsocksslhandshake], got a error. the error log is

2017/07/12 13:02:59 [error] 104940#0: *28 lua entry thread aborted: runtime error: content_by_lua(nginx.conf:137):10: attempt to call field 'sslhandshake' (a nil value)
stack traceback:
coroutine 0:
        content_by_lua(nginx.conf:137): in function <content_by_lua(nginx.conf:137):1>, client: 127.0.0.1, server: www.test.com, request: "GET /tcp HTTP/1.1", host: "localhost:9001"

and the code is

location = /tcp {
 resolver 8.8.8.8;
 content_by_lua '
     local sock = ngx.socket.tcp()
     local ok, err = sock:connect("www.baidu.com", 80)
     if not ok then
        ngx.say("failed to connect to baidu: ", err)
         return
     end
     sock:settimeout(60)
     sock:setkeepalive(40)
     sock:sslhandshake(nil, "www.baidu.com",false)
     ngx.say("successfully connected to baidu!")
     sock:close()
 ';
}
yejingx commented 7 years ago

Which lua-nginx-module version do you use?

oliveryunchang commented 7 years ago

test on the latest slardar, lua-nginx-module version is 0.10.6rc1

yejingx commented 7 years ago

@0904681074 You must compile Nginx with openssl before you can use tcpsocket:sslhandshake. You can add --with-openssl or set your own openssl path here.

oliveryunchang commented 7 years ago

Thanks a lot!

oliveryunchang commented 7 years ago

--with-http_ssl_module or --with-openssl=openssl_path