Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

通过resty.http 调用 https 请求,一直报错 #297

Open
poohlaha opened this issue May 12, 2023 · 1 comment
Open

通过resty.http 调用 https 请求,一直报错 #297

poohlaha opened this issue May 12, 2023 · 1 comment

Comments

@poohlaha
Copy link

poohlaha commented May 12, 2023

前提

电脑:
image

其他安装版本(使用nginx源码编译的方式集成 lua, 而非 openresty):

nginx version: nginx/1.23.4
lua version: Lua 5.4.5  Copyright (C) 1994-2023 Lua.org, PUC-Rio
luajit version: LuaJIT 2.1.0-beta3 -- Copyright (C) 2005-2022 Mike Pall. https://luajit.org/(使用的是openresty中的版本)
openssl verions: 3.1.0
pcre version: 1.x

nginx需要的模块(从openresty的 github 中下载):

lua-nginx-module(master分支)
ngx_devel_kit(master分支)
lua-resty-core(master分支, 需要 `make` 和 `make install` 到`/xxx/restry`目录)
lua-resty-lrucache(master分支, 需要 `make` 和  `make install` 到`/xxx/restry`目录)

lua-resty-http 模块:

1. 下载: https://github.com/ledgetech/lua-resty-http/tree/master, 
2, 通过 make 命令安装到 `xxx/restry` 目录下

配置 nginx,添加 resty 目录映射:

http {
   ...
  
  # 添加 lua_package_path
 lua_package_path '/xxx/restry/lib/lua/?.lua;;';
 lua_package_cpath '/xxx/restry/lib/lua/?.so;;';

  ...
 
}

开发

因为后台是使用的 https 的链接, 所以想通过nginx lua 直接调用,代码如下:

-- http.test.lua
local http = require('resty.http')
local client = http.new()
local res, err = client:request_uri(
  'https://xxx.com:9090/xxx',  -- 具体地址是 https 开头, 带 9090 端口
  {
     method = 'GET',
     keepalive_timeout = 30000
  }
)

nginx 配置:

location /test {
        default_type 'application/json'; #返回Json文本
        content_by_lua_file /xxx/http.test.lua; -- 对应上面 http.test.lua 文件地址
 }

现在报错信息如下:

2023/05/12 15:41:42 [debug] 25930#0: *35 [lua] index.lua:71: send(): [Nginx Lua Http]**url: https://xxx.com:9090/xxx**
2023/05/12 15:41:42 [debug] 25930#0: *35 [lua] index.lua:72: send(): [Nginx Lua Http]**method: GET**
2023/05/12 15:41:42 [debug] 25930#0: *35 [lua] index.lua:73: send(): [Nginx Lua Http]**keepalive_timeout: 300000**
2023/05/12 15:41:43 [error] 25930#0: *35 lua entry thread aborted: runtime error: ...s/smile/tools/nginx/restry/lib/lua/resty/core/socket.lua:209: **dlsym(RTLD_DEFAULT, ngx_http_lua_ffi_socket_tcp_sslhandshake): symbol not found**
stack traceback:
coroutine 0:
	[C]: in function '__index'
	...s/smile/tools/nginx/restry/lib/lua/resty/core/socket.lua:209: in function 'sslhandshake'
	.../smile/tools/nginx/restry/lib/lua/resty/http_connect.lua:247: in function 'connect'
	/Users/smile/tools/nginx/restry/lib/lua/resty/http.lua:934: in function 'request_uri'
	./http/index.lua:77: in function 'send'
	/Users/smile/tools/nginx/nginx-code/https.test.lua:20: in main chunk, client: 127.0.0.1, server: localhost, request: "GET /testHttps/ HTTP/1.1", host: "localhost:9999"

查看 socket.lua 找到错误地方:
image

查看 http_connect.lua 找到错误地方:
image

http 请求正常,就是 https 报错,帮忙看一下,谢谢~

@pintsized
Copy link
Member

What makes you think this has anything to do with lua-resty-http? The error appears to be related to your installation / platform - you will get the same error calling https://github.com/openresty/lua-nginx-module#tcpsocksslhandshake from any Lua code.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants