nginx lua-resty-http无主机错误的路由

时间:2017-10-14 14:09:06

标签: nginx lua openresty

我正在尝试使用lua-resty-http发出http请求。 我在CGI

中创建了一个简单的get api

我可以使用以下地址发出请求:https://requestb.in

然而,当我尝试在nginx中执行此操作时,我收到错误no route to host

我的nginx.conf文件是:

worker_processes  1;
error_log logs/error.log;
events {
    worker_connections 1024;
}
http {
    lua_package_path "$prefix/lua/?.lua;;";
    server {
        listen 8080;
        location / {
            resolver 8.8.8.8;
            default_type text/html;
            lua_code_cache off; #enables livereload for development
            content_by_lua_file ./lua/test.lua;
        }
    }
}

我的Lua代码是

local http = require "resty.http"
local httpc = http.new()

--local res, err = httpc:request_uri("https://requestb.in/snf2ltsn", {ssl_verify = false,method = "GET" })

      local res, err = httpc:request_uri("https://requestb.in/snf2ltsn", {
        method = "GET",
        headers = {
          ["Content-Type"] = "application/x-www-form-urlencoded",
        }
      })

如何解决此问题? 或者是否有任何建议在nginx中发出http请求? 任何线索?

PS:我的Lua代码中有一个评论部分。我也尝试使用该代码发出请求但没有任何反应。

2 个答案:

答案 0 :(得分:1)

更改package_path,如:

lua_package_path "$prefix/resty_modules/lualib/?.lua;;";
lua_package_cpath "$prefix/resty_modules/lualib/?.so;;";

答案 1 :(得分:0)

默认情况下,nginx解析器返回给定域的IPv4和IPv6地址。

resty.http模块使用cosocket API。

使用域名调用的Cosocket连接方法选择一个随机IP地址你不幸运并选择了IPv6地址。您可以通过查看nginx error.log

来查看它

很可能IPv6无法在你的盒子上工作。

要在您所在的位置禁用以下nginx解析程序使用指令:

resolver 8.8.8.8 ipv6=off;