nginx内置变量详解

标签: nginx 参数 内置
53人阅读 评论(0) 收藏 举报
分类:

Ngx_http_core_module模块支持内置变量,他们的名字和apache的内置变量是一致的,人性化吧,了解这些变量,将使我们配置起来非常方便,


例如:负载均衡中的header头转发 让后端服务器可以获取到客户端请求的真实ip  

首先我们来先看一个最基本的请求header  这是我去请求www.baidu.com 请求header如下:

Accept  text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8  
Accept-Encoding gzip, deflate, br  
Accept-Language zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3  
Connection  keep-alive  
Host    www.baidu.com  
Referer https://www.baidu.com/s?wd=aaa&rsv_spt=1&rsv_iqid=0x80378a480003084f&issp=1&f=8&rsv_bp=0&rsv_idx=2&  
ie=utf-8&tn=baiduhome_pg&rsv_enter=1&rsv_sug3=4&rsv_sug1=2&rsv_sug7=100&rsv_sug2=0&inputT=1804&rsv_sug4=1805  
User-Agent  Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:47.0) Gecko/20100101 Firefox/47.0  



为什么要贴这个呢?因为我接下来介绍的nginx内置变量中就有和它们相关的  边看边核对 理解起来更容易不是?
常用内置变量列表如下

$args   
此变量与请求行中的参数相等 注意我请求中的 referer  此变量表示我请求的所有参数

$content_length
等于请求行的“Content_Length”的值。

$content_type
等同与请求头部的”Content_Type”的值

$document_root
等同于当前请求的root指令指定的值

$document_uri
讲解这个变量之前需要讲解下nginx规范化
所谓规范化,就是先将URI中形如“%XX”的编码字符进行解码,再解析URI中的相对路径“.”和“..”部分, 另外还可能会压缩相邻的两个或多个斜线成为一个斜线,
这也就是如www.xxx.com///index.html 这样的访问也能访问的原因
规范前的url为 www.xxx.com///index.html 保存在$request_uri中
而规范后的url为 www.xxx.com/index.html 保存在$uri中  nginx会压缩相邻的两个或多个斜线成为一个斜线

$host
与请求头部中“Host”行指定的值或是request到达的server的名字(没有Host行)一样 上述例子中没有体现

$limit_rate
允许限制的连接速率 一般不常用

$request_method
等同于request的method,通常是“GET”或“POST”

$remote_addr
客户端ip 这个再做负载均衡的时候 如果要获取到客户端的请求ip需要这个

$remote_port
客户端port

$remote_user
等同于用户名,由ngx_http_auth_basic_module认证

$request_filename
当前请求的文件的路径名,由root或alias和URI request组合而成


$request_body_file
请求body内的文件

$request_uri
含有参数的完整的初始URI 如上例子就是

https://www.baidu.com/s?wd=aaa&rsv_spt=1&rsv_iqid=0x80378a480003084f&issp=1&f=8&rsv_bp=0&rsv_idx=2&  
ie=utf-8&tn=baiduhome_pg&rsv_enter=1&rsv_sug3=4&rsv_sug1=2&rsv_sug7=100&rsv_sug2=0&inputT=1804&rsv_sug4=1805  

$query_string
与$args一样 请求中的参数

$sheeme
http模式(http,https)

$server_protocol
等同于request的协议,使用“HTTP/或“HTTP/


$server_addr request
到达的server的ip,一般获得此变量的值的目的是进行系统调用。为了避免系统调用,有必要在listen指令中指明ip,并使用bind参数。

$server_name
请求到达的服务器名

$server_port
请求到达的服务器的端口号

$uri
等同于当前request中的URI,可不同于初始值,例如内部重定向时或使用index


查看评论

nginx 内置变量使用说明及具体意义

nginx 内置变量使用说明及具体意义$args参数: $args 解释: HTTP请求中的完整参数。 访问: curl http://test.wanglei.com/192.168.1.200?a...
  • wanglei_storage
  • wanglei_storage
  • 2017-03-25 22:26:43
  • 371

关于nginx的内置变量

关于nginx的内置变量在OpenResty中,经常遇到nginx的内置变量,当时记住了,过一段时间在看到又感觉陌生无比。或者想不起来,或者自己也不确定,我在网上找了找然后在测试了一下,方便以后直观的...
  • mentalidade
  • mentalidade
  • 2016-04-19 15:05:00
  • 438

Nginx 内置变量表( ngx_http_variables),Nginx 服务器配置详解

``` 变量名 简要说明:$args 请求中的参数; $binary_remote_addr 远程地...
  • weixin_36429334
  • weixin_36429334
  • 2017-04-07 19:16:16
  • 1176

Nginx内置变量列表

  • 2011年12月10日 18:28
  • 11KB
  • 下载

nginx内置属性

名称        版本        说明(变量列表来源于文件 ngx_http_variables ) $args        1.0.8        请求中的参数; $binar...
  • bao19901210
  • bao19901210
  • 2016-09-14 13:52:38
  • 753

获取Nginx内置绑定变量

获取Nginx内置绑定变量 Nginx作为一个成熟、久经考验的负载均衡软件,与其提供丰富、完整的内置变量是分不开的,它极大增加了我们对Nginx网络行为的控制细度。这些变量大部分都是在请求进入时...
  • a930716
  • a930716
  • 2017-06-15 14:36:44
  • 528

Nginx中 conf文件的内置变量

nginx全局变量使用方法是在前面加符号,如符号,如hostnamearg_PARAMETER #这个变量包含GET请求中,如果有变量PARAMETER时的值。 args ...
  • qwed070
  • qwed070
  • 2017-07-11 19:32:31
  • 455

Nginx 内置变量,细化规则,真实IP获取及限制连接请求

摘要: 希望下周测试之后能用起来!!!感觉很有用的。 http://www.bzfshop.net/article/176.html http://www.cr173.com/html/19761_1...
  • ai2000ai
  • ai2000ai
  • 2017-05-08 14:16:35
  • 463

nginx模块开发-增加nginx内置变量

众所周知,nginx中set $xxx 'hello';就是通过用set指令给变量xxx设置hello的字符串值,在nginx中调用值的话,只需要$xxx就可以使用这个变量。   然而在nginx中,...
  • linsongze2011
  • linsongze2011
  • 2016-01-15 11:46:18
  • 4677

Nginx的location匹配指令及常用内置变量

有如下指令语法可使用 ~ #区分大小写的正则匹配 ~* #不区分大小写的正则匹配 ^~ #普通字符匹配,如果此选项匹配成功,忽略其他匹配选项,一般用来匹配目录 = #普通字符精确匹配 @ #...
  • joeyon
  • joeyon
  • 2015-09-28 17:21:31
  • 1084
    个人资料
    持之以恒
    等级:
    访问量: 20万+
    积分: 4295
    排名: 8801
    最新评论