openresty 解析本地域名 lua-local-resolver

创建日期: 2024-05-23 17:13 | 作者: 风波 | 浏览次数: 33 | 分类: openresty

openresty 的 redis 模块无法解析 /etc/hosts 文件中的域名,可以使用 lua-local-resolver 包来解析本地的域名文件。

项目地址:https://github.com/ysugimoto/lua-local-resolver

  1. 添加一个初始化指令 init_by_lua_block ,和 server 同级别
init_by_lua_block {
  package.path = package.path .. ";/usr/local/openresty/nginx/lualibs/?.lua"
  local resol = require "local-resolver"

  -- expose global as we expect
  resolver = resol.new("/etc/hosts")
}

/usr/local/openresty/nginx/lualibs/ocal-resolver.lua 是库的文件位置。 第6行指定全局变量 resolver 1. 使用 resolver content_by_lua_block 是 location 内部的指令。

content_by_lua_block {
  local redis = require "resty.redis"
  local r = redis:new()
  -- connect with hostname
  local ok, err = r:connect(resolver:resolve("localhost"), 6379)
  ...
}

除了使用 init_by_lua_block 之外,还可以使用 init_by_lua_file 进行初始化。只不过只指定一个初始化文件 init.lua,效果和 content_by_lua_block 一样。

33 浏览
14 爬虫
0 评论