nginx上游用于red:connect()在lua resty redis

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

我需要在预先配置的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 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:找不到主机)
**

我能不能让那东西按预期工作?同志们,先谢谢你们