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

与$uri一样 当前request中的URI


$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,liunx,内置变量,后端服务)