一、背景说明
准备在项目中基于nginx、OpenResty搭建一个简易网关,实现同一域名根据不同cookie代理不同docker功能,降低前端、移动端多业务线并行测试联调成本。简单来说就是服务端有多个测试环境docker分别部署不同业务需求代码,通过在前端、移动端种植cookie(存放服务端测试环境docker IP地址)方式让其具有可选择服务端测试环境能力,大大降低联调环境配置成本。具体cookie的解析逻辑在nginx中使用lua实现。
二、lua中读写header、cookie 代码
---获取请求header
local reqHeaders = ngx.req.get_headers();
---获取请求cookie
local reqCookie = reqHeaders["cookie"];
--读取cookie值
local pcip = ngx.var.cookie_pcip;
pcip=reqCookie["pcip"];
--设置赋值cookie
ngx.header['Set-Cookie']={"pcip=127.0.0.1;domain=.timer.com;path=/" }
注:在nginx.header['Set-Cookie'] 时遇到一个问题,一次性种植多个cookie时,会出现无法一次性全部种植成功的情况,需要多次请求种植方能全部种植成功,在实战中请慎用。尤其在ngx.say()方法调用之前种植cookie出现无法一次种植成功现象几率大,在ngx.print()方法调用之前种植cookie也会如此。
其他辅助代码: