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;
}
}
}