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