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組合而成
請求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