nginx内置变量详解

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



评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值