nginx上游用于red:connect()在lua resty redis
我需要在预先配置的redis服务器上游和动态IP:6379之间切换,通过自定义头进行测试。当前配置示例:nginx上游用于red:connect()在lua resty redis,nginx,lua,redis,Nginx,Lua,Redis,我需要在预先配置的redis服务器上游和动态IP:6379之间切换,通过自定义头进行测试。当前配置示例: upstream backend_cluster { server aaa.bbb.ccc.ddd:6379 fail_timeout=0 max_fails=0; server aaa.bbb.ccc.ddd:6380 fail_timeout=0 max_fails=0; server aaa.bbb.ccc.ddd:6381 fail_timeout=0
upstream backend_cluster {
server aaa.bbb.ccc.ddd:6379 fail_timeout=0 max_fails=0;
server aaa.bbb.ccc.ddd:6380 fail_timeout=0 max_fails=0;
server aaa.bbb.ccc.ddd:6381 fail_timeout=0 max_fails=0;
server aaa.bbb.ccc.ddd:6382 fail_timeout=0 max_fails=0;
keepalive 16;
}
map $http_BackendIP $backend_upstream {
default "backend_cluster";
"~^([0-9]{1,3}[\.]){3}[0-9]{1,3}+" "$BackendIP";
}
server {
listen 80 default_server;
server_name _;
set $BackendIP "${http_BackendIP}:6379";
location = /test {
........
content_by_lua_block {
local redis = require "resty.redis"
local red = redis:new()
red:set_timeout(1000)
local ok, err = red:connect(ngx.var.backend_upstream)
if not ok then
ngx.log(ngx.ERR, "failed to connect: ", err)
return
end
ok, err = red:rpush(ngx.var.redis_key, ngx.var.query)
if not ok then
ngx.log(ngx.ERR, "rpush error: ", err)
return
end
}
}
}
如果我将customheader设置为
“后端IP:123.456.789.0”
但如果没有BackendIP标头,则无法理解nginx上游,并出现错误:
**连接失败:无法解析后端\u群集(3:找不到主机)
**
我能不能让那东西按预期工作?同志们,先谢谢你们