slardar icon indicating copy to clipboard operation
slardar copied to clipboard

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

Open oliveryunchang opened this issue 7 years ago • 5 comments

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()
 ';
}

oliveryunchang avatar Jul 12 '17 05:07 oliveryunchang

Which lua-nginx-module version do you use?

yejingx avatar Jul 12 '17 06:07 yejingx

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

oliveryunchang avatar Jul 12 '17 06:07 oliveryunchang

@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.

yejingx avatar Jul 13 '17 01:07 yejingx

Thanks a lot!

oliveryunchang avatar Jul 13 '17 02:07 oliveryunchang

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

oliveryunchang avatar Jul 13 '17 09:07 oliveryunchang