关于nginx的内置变量

关于nginx的内置变量

在OpenResty中,经常遇到nginx的内置变量,当时记住了,过一段时间在看到又感觉陌生无比。或者想不起来,或者自己也不确定,我在网上找了找然后在测试了一下,方便以后直观的查看。

nginx支持一些内建变量,与Apache使用的变量相一致,一些变量代表了 客户端请求头部的一些字段。入$http_user_agent $http_cookie等等,由于这些变量会在请求中定义,所以无法保证他们是否存在或者可以定义一些别的地方。
除此之外,下面是一些其他的变量,代码中使用
ngx.say(ngx.var.arg_name) ngx.exit(200),来测试结果。url是http://wuyachao.com/middleware/admin/getname?v=1&id=1111&name=aaa&sex

  • $arg_PARAMETER
    例子:1. ngx.say(ngx.var.arg_name)
    -- aaa

    2. args = ngx.req.get_uri_args()
    ngx.say(args.name) --这种方式是返回一个lua的表,然后从表中获取数据
    -- aaa

  • $uri

    请求中的当前URI(不带请求参数,参数位于 args) request_uri的值,它
    可以通过内部重定向,或者使用index指令进行修改。
    – /middleware/admin/getname

  • $query_string

    与$args相同。
    – v=1&id=1111&name=aaa&sex

  • $request_uri

    这个变量等于包含一些客户端请求参数的原始URI,它无法修改,请查看$uri更改或重写URI。
    – /middleware/admin/getname?v=1&id=1111&name=aaa&sex

  • $binary_remote_addr

    二进制码形式的客户端地址。
    返回的是乱码

  • $body_bytes_sent

    传送页面的字节数
    –返回值是:0

  • $content_length

    请求头中的Content-length字段。
    –返回nil

  • $content_type

    请求头中的Content-Type字段

  • $cookie_COOKIE

    cookie COOKIE的值。

  • $document_root

    当前请求在root指令中指定的值。
    – /data/sysadmin/xxxx/xxxxx/api.xxxx.com

  • $document_uri

    与$uri相同。
    –/middleware/admin/getname

  • $host

    请求中的主机头字段,如果请求中的主机头不可用,则为服务器处理请求的服务器名称。
    –midtest.api.xxxx.com

  • $is_args

    如果$args设置,值为”?”,否则为”“。
    – ?

  • $limit_rate

    这个变量可以限制连接速率。
    – 0

  • $nginx_version

    当前运行的nginx版本号
    – 1.8.0 和 /usr/local/openresty/nginx/sbin/nginx -V 的一致

  • $remote_addr

    客户端的IP地址
    – 172.xx.xx.xx 请求客户端的ip地址

  • $remote_port

    客户端的端口。
    –61129

  • $remote_user

    已经经过Auth Basic Module验证的用户名
    –nil, 没有被认证

  • $request_filename

    当前连接请求的文件路径,由root或alias指令与URI请求生成。
    – /data/sysadmin/service_deploy_data/c2-hd-webplat/api.xxxx.com/middleware/admin/getname
    目录实际的目录/data/sysadmin/service_deploy_data/c2-hd-webplat/api.xxxx.com/application/action/api/middleware/admin/getname位置

  • $request_body

    这个变量(0.7.58+)包含请求的主要信息。在使用proxy_pass或fastcgi_pass指令的location中比较有
    意义。
    – nil

  • $request_body_file

    客户端请求主体信息的临时文件名。
    –nil

  • $request_completion

    未知。 – 什么都没有返回

  • $request_method

    这个变量是客户端请求的动作,通常为GET或POST。
    包括0.8.20及之前的版本中,这个变量总为main request中的动作,如果当前请求是一个子请求,并
    不使用这个当前请求的动作。
    – GET
    curl -d “name =wuyachao” http://wuyachao.com/middleware/admin/getname?v=1
    – 返回 POST

  • $scheme

    HTTP方法(如http,https)。按需使用,例:
    rewrite ^(.+) <script type="math/tex" id="MathJax-Element-26"> </script>scheme://example.com$1 redirect;
    – http

  • $server_addr

    服务器地址,在完成一次系统调用后可以确定这个值,如果要绕开系统调用,则必须在listen中指
    定地址并且使用bind参数
    – 192.168.19.xxx 对应的请求的服务器ip地址

  • $server_name

    服务器名称。
    – midtest.api.xxxx.com 服务器的名称和上面的host

  • $server_port

    请求到达服务器的端口号。
    – 80

  • $server_protocol

    请求使用的协议,通常是HTTP/1.0或HTTP/1.1。
    –HTTP/1.1

  • $HTTP_X_FORWARDED_FOR

    是透过代理服务器取得客户端的真实IP地址,有些用此方法读取到的仍然是代理服务器的IP。还有一点需要注意的是:如果客户端没有通过代理服务器来访问,那么用 HTTP_X_FORWARDED_FOR 取到的值将是空的
    – nil

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值