美文网首页
2018年8月23——怎样在lua中获取并使用nginx的变量

2018年8月23——怎样在lua中获取并使用nginx的变量

作者: 兔子Tony的主人 | 来源:发表于2018-08-23 17:03 被阅读0次
  • 不知道我查的不对,还是网上很少有人说这个,我查了很久才查到点蛛丝马迹,自己试了出来。为了方便其他人,我这里多做几个可用来搜索的字符串吧。
  • 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)
            }
       }
   }
}

相关文章

网友评论

      本文标题:2018年8月23——怎样在lua中获取并使用nginx的变量

      本文链接:https://www.haomeiwen.com/subject/yfdmiftx.html