hello,
建议下次贴一下测试用例,即使再简单
我大概明白你的意思, 贴一下我的测试用例:
{
...
location /cookie {
content_by_lua "
-- ngx.say(ngx.var.cookie_ip-loc) -- error
ngx.say(ngx.var.cookie_ip_loc) -- nil
"
}
...
}
curl --cookie ip-loc=127.0.0.1 http://127.0.0.1/cookie
ngx.var.xxx这个语义只是简单地获取nginx core的内置变量(http://nginx.org/en/docs/http/ngx_http_core_module.html#variables), https://github.com/openresty/lua-nginx-module/blob/master/src/ngx_http_lua_variable.c#L120
这个单独作为nginx内置变量,也不好获取
普及一下cookie变量命名规则 http://stackoverflow.com/questions/1969232/allowed-characters-in-cookies
-这个字符其实是支持的, 无奈lua语法不支持-
这里有三个方法, 建议使用第三个:
1. 用HttpMapModule 把ip-loc映射到ip_loc这样用ngx.var.cookie_ip_loc就可以了 (参考https://forum.nginx.org/read.php?2,223770,223770#msg-223770)
2. 自已从header里读取Cookie 根据cookie规则解析, ngx.req.get_headers()["Cookie"]
3. 用lua-resty-cookie模块 https://github.com/cloudflare/lua-resty-cookie
祝好
On Thursday, December 31, 2015 at 5:01:55 PM UTC+8, YuanSheng wrote:
抓个 HTTP 请求包数据吧,明确一下输入。以及 openresty 版本、配置文件、脚本等信息。
没有明确的复现环境,不太好确定你的问题原因。
2015-12-31 16:55 GMT+08:00 Ke Gao
<pis...@gmail.com>:
这样肯定不行,要是要有个ip_loc的cookie,
那样不就冲突了。On Thursday, December 31, 2015 at 10:43:36 AM UTC+8, level077 wrote:
local ip = ngx.var.cookie_ip_loc ?
在 2015年12月31日星期四 UTC+8上午10:12:01,Ke Gao写道:
我想要获取一个cookie的值,它的名字是类似这样:“ip-
loc”,我就要这样写 local ip = ngx.var.cookie_ip-loc 。但是这样写在lua中并不能正确的被解释,我需要怎么写才能获取到这类cookie的值呢?
谢谢!
--
YuanSheng Wang
---------------------------------------
OpenResty lover ^_^