openresty 的 redis 模块无法解析 /etc/hosts
文件中的域名,可以使用 lua-local-resolver
包来解析本地的域名文件。
项目地址:https://github.com/ysugimoto/lua-local-resolver
- 添加一个初始化指令
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
一样。