Lua + Redis+openresty1.13灰度环境发布

    xiaoxiao2023-11-06  142

    nginx 配置

     

    http { upstream test1 { server 127.0.0.1:8081; } upstream test2 { server 127.0.0.1:8082; } server { listen 80; server_name localhost; lua_need_request_body on; location /test { content_by_lua_block {

    -- 获取headers 值 local data = ngx.req.get_headers()["aa"] -- ngx.say("header: ", data)

    -- 连接redis local redis = require "resty.redis" local red = redis:new() red:set_timeout(1000) local ok, err = red:connect("127.0.0.1", 6379) if not ok then -- ngx.say("faild to connect: ", err) -- return end

     

    -- 获取redis内的key local res, err = red:get("dog") if not res then -- ngx.say("failed to get dog: ", err) -- return end -- ngx.say("get dog: ", res) -- 判断headers 值和 redis存的键值是否一致,如果一致跳转到灰度环境 if data == res then return ngx.exec("/test1") end

    -- 不一致跳转到正式环境 return ngx.exec("/test2") } } location /test1 { proxy_pass http://test1; } location /test2 { proxy_pass http://test2;

    }

    }

    }

    最新回复(0)