美文网首页
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