- 不知道我查的不对,还是网上很少有人说这个,我查了很久才查到点蛛丝马迹,自己试了出来。为了方便其他人,我这里多做几个可用来搜索的字符串吧。
- nginx的变量lua中使用/lua用nginx变量/lua使用nginx变量/nginx怎样获取headers中的值,哎!简书的SEO本来就不好,也不知道能不能帮到别人。
问题
自己在前端发送请求是,在前端的headers中,定义一个Access-Token的变量,并赋予前端存储的token值。
当nginx收到这个变量时,获取这个变量,交给lua,然后lua在redis中进行匹配
那么问题来了,nginx如何获得Access-Token这个变量的值,lua怎么获取nginx得到的Access-Token这个值
- 其实项目做到一半,然后卡着慢慢学nginx+lua有些不现实,只能硬着头皮,遇到什么问题,解决什么问题了。我这里做个记录,大神可以忽略。
解决方法
- nginx怎么获取headers中的Access-Token,直接在nginx用$http_access_token就可以获取。
可以用日志验证是否获取到,下边将会贴出我nginx.conf的代码 - lua怎么获取或者使用nginx的$http_access_token变量,在lua代码中用ngx.var.http_access_token就可以了
可以用ngx.lua()方法输出一个返回到前端的字符串,验证是否获取到该变量。 - 下边是我的nginx.conf的代码,分享给大家,
注意:我安装的openresty,并且代码有适当的精简,如果需要尝试的话,将有注释的代码复制到自己的配置文件中即可。
http {
include mime.types;
default_type application/octet-stream;
#设定写入日志的内容,这里我为了看是否可以获取到headers中的Access-Token,这里只给日志中写入这一个值。
log_format main "$http_access_token";
#设定日志的保存路径和日志模板,这里看不懂的话,看一看nginx日志的知识。
access_log logs/access.log main;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location /test {
#content_by_lua_block表示{}内的代码,全部是lua代码
content_by_lua_block {
#用ngx.say输出ngx.var.http_access_token
ngx.say("前端传过来的headers中的Access-Token的值是:", ngx.var.http_access_token)
}
}
}
}
网友评论