Nginx與Lua灰度發(fā)布的實(shí)現(xiàn)
安裝 memcached
yum install -y memcached #啟動(dòng)memcached服務(wù),端口11211,以nobody身份啟動(dòng),-d后臺(tái)模式運(yùn)行 memcached -p11211 -u nobody -d #將自己的IP設(shè)為灰度測(cè)試的IP telnet 127.0.0.1 11211 set 119.32.216.122 0 0 1 1 quit
安裝 memcached for lua
wget https://github.com/openresty/lua-resty-memcached/archive/v0.11.tar.gz tar -zxvf v0.11.tar.gz mkdir -p /usr/local/share/lua/5.1 cp -r lua-resty-memcached-0.11/lib/resty /usr/local/share/lua/5.1
創(chuàng)建 test.lua 文件
clientIP=ngx.req.get_headers()["X-Real-IP"]
if clientIP == nil then
clientIP=ngx.req.get_headers()["x_forwarded_for"]
end
if clientIP == nil then
clientIP=ngx.var.remote_addr
end
local memcached=require "resty.memcached"
local memc,err=memcached:new()
if not memc then
ngx.say("failed to instantiate memc:",err)
return
end
local ok,err =memc:connect("127.0.0.1",11211)
if not ok then
ngx.say("failed to connect:",err)
return
end
local res,flags,err =memc:get(clientIP)
--ngx.say("value key: ",res,clientIP)
if err then
ngx.say("failed to get clientIP",err)
return
end
if res == "1" then
ngx.exec("@server_test")
return
end
ngx.exec("@server_product")
nginx配置
server {
listen 8867;
server_name www.siguoya.name;
root /usr/local/nginx/1.12.1/html;
location / {
content_by_lua_file /etc/nginx/test.lua;
}
location /hello {
default_type text/plain;
content_by_lua 'ngx.say("hello lua")';
}
location /ua {
default_type text/plain;
content_by_lua '
clientIP=ngx.req.get_headers()["USER-AGENT"]
ngx.say("IP:",clientIP)
';
}
location @server_product {
default_type text/plain;
return 200 'product';
}
location @server_test {
default_type text/plain;
return 200 'test';
}
}
由于我們將 119.32.216.122 這個(gè)IP添加進(jìn)了memcached中,因此訪問(wèn) http://www.siguoya.name:8867/ 的時(shí)候,看到的內(nèi)容就是 test
而開(kāi)啟全局代理之后,發(fā)現(xiàn)看到的內(nèi)容就是 product,這樣就實(shí)現(xiàn)了針對(duì)部分用戶進(jìn)行灰度測(cè)試的效果
到此這篇關(guān)于Nginx與Lua灰度發(fā)布的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)Nginx與Lua灰度發(fā)布內(nèi)容請(qǐng)搜索本站以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持本站!
版權(quán)聲明:本站文章來(lái)源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請(qǐng)保持原文完整并注明來(lái)源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非maisonbaluchon.cn所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來(lái)源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來(lái),僅供學(xué)習(xí)參考,不代表本站立場(chǎng),如有內(nèi)容涉嫌侵權(quán),請(qǐng)聯(lián)系alex-e#qq.com處理。
關(guān)注官方微信