Nginx 同 Apache 和 Lighttpd 等其他 Web 服務(wù)器的配置記法不太相同画株, Nginx 的配置文件使用語法的就是一門微型的編程語言微猖。可以類似寫程序一般編寫 配置文件袒哥,可操作性很大韵丑。既然是編程語言僻孝,一般也就少不了“變量”這種東西。
所有的 Nginx 變量在 Nginx 配置文件中引用時都須帶上 $ 前綴在 Nginx 配置中守谓,變量只能存放一種類型的值穿铆,有且也只存在一種類型,那就是字符串類型 使用 set 配置指令對變量 $a 進(jìn)行了賦值操作
set $hello "hello world" ;
Nginx 變量一旦創(chuàng)建斋荞,其變量名的可見范圍就是整個 Nginx 配置荞雏,甚至可以跨越不同虛擬主機(jī)的 server 配置塊。
Nginx 變量名的可見范圍雖然是整個配置平酿,但每個請求都有所有變量的獨立副本凤优,或者說都有各變量用來存放值的容器的獨立副本,彼此互不干擾蜈彼。
Nginx 內(nèi)置變量:
內(nèi)置變量存放在 ngx_http_core_module 模塊中
參數(shù)名稱 | 注釋 |
---|---|
$arg_PARAMETER HTTP | 請求中某個參數(shù)的值筑辨,如/index.php?site=www.ttlsa.com,可以用$arg_site取得www.ttlsa.com這個值 |
$args HTTP | 請求中的完整參數(shù)幸逆。例如挖垛,在請求/index.php?width=400&height=200 中,$args表示字符串width=400&height=200. |
$binary_remote_addr | 二進(jìn)制格式的客戶端地址秉颗。例如:\x0A\xE0B\x0E |
$body_bytes_sent | 表示在向客戶端發(fā)送的http響應(yīng)中痢毒,包體部分的字節(jié)數(shù) |
$content_length | 表示客戶端請求頭部中的Content-Length 字段 |
$content_type | 表示客戶端請求頭部中的Content-Type 字段 |
$cookie_COOKIE | 表示在客戶端請求頭部中的cookie 字段 |
$document_root | 表示當(dāng)前請求所使用的root 配置項的值 |
$uri | 表示當(dāng)前請求的URI,不帶任何參數(shù) |
$document_uri 與 $uri | 含義相同 |
$request_uri | 表示客戶端發(fā)來的原始請求URI蚕甥,帶完整的參數(shù)哪替。$uri和$document_uri未必是用戶的原始請求,在內(nèi)部重定向后可能是重定向后 的URI菇怀,而$request_uri 永遠(yuǎn)不會改變凭舶,始終是客戶端的原始URI. |
$host | 表示客戶端請求頭部中的Host字段。如果Host字段不存在爱沟,則以實際處理的server(虛擬主機(jī))名稱代替帅霜。如果Host字段中帶有 端口,如IP:PORT呼伸,那么$host是去掉端口的身冀,它的值為IP。$host 是全小寫的括享。這些特性與http_HEADER中的http_host不同搂根, http_host只取出Host頭部對應(yīng)的值。 |
$hostname | 表示 Nginx所在機(jī)器的名稱铃辖,與 gethostbyname調(diào)用返回的值相同 |
$http_HEADER | 表示當(dāng)前 HTTP請求中相應(yīng)頭部的值剩愧。HEADER名稱全小寫。例如娇斩,示請求中 Host頭部對應(yīng)的值 用 $http_host表 |
$sent_http_HEADER | 表示返回客戶端的 HTTP響應(yīng)中相應(yīng)頭部的值仁卷。HEADER名稱全小寫穴翩。例如,用 $sent_ http_content_type表示響應(yīng)中 Content- Type頭部對應(yīng)的值 |
$is_args | 表示請求中的 URI是否帶參數(shù)锦积,如果帶參數(shù)藏否,$is_args值為 ?,如果不帶參數(shù)充包,則是空字符串 |
$limit_rate | 表示當(dāng)前連接的限速是多少副签,0表示無限速 |
$nginx_version | 表示當(dāng)前 Nginx的版本號 |
$query_string | 請求 URI中的參數(shù),與 |
$remote_addr | 表示客戶端的地址 |
$remote_port | 表示客戶端連接使用的端口 |
$remote_user | 表示使用 Auth Basic Module時定義的用戶名 |
$request_filename | 表示用戶請求中的 URI經(jīng)過 root或 alias轉(zhuǎn)換后的文件路徑 |
$request_body | 表示 HTTP請求中的包體淆储,該參數(shù)只在 proxy_pass或 fastcgi_pass中有意義 |
$request_body_file | 表示 HTTP請求中的包體存儲的臨時文件名 |
$request_completion | 當(dāng)請求已經(jīng)全部完成時,其值為 “ok”家浇。若沒有完成本砰,就要返回客戶端,則其值為空字符串钢悲;或者在斷點續(xù)傳等情況下使用 HTTP range訪問的并不是文件的最后一塊点额,那么其值也是空字符串。 |
$request_method | 表示 HTTP請求的方法名莺琳,如 GET还棱、PUT、POST等 |
$scheme 表示 HTTP scheme | 如在請求 https://nginx.com/中表示 https |
$server_addr | 表示服務(wù)器地址 |
$server_name | 表示服務(wù)器名稱 |
$server_port | 表示服務(wù)器端口 |
$server_protocol | 表示服務(wù)器向客戶端發(fā)送響應(yīng)的協(xié)議惭等,如 HTTP/1.1或 HTTP/1.0 |