1. 程式人生 > >Nginx 內建繫結變數

Nginx 內建繫結變數

Nginx作為一個成熟、久經考驗的負載均衡軟體,與其提供豐富、完整的內建變數是分不開的,它極大增加了對Nginx網路行為的控制細度。這些變數大部分都是在請求進入時解析的,並把他們快取到請求cycle中,方便下一次獲取使用。首先來看看Nginx對都開放了那些API

參看下表:

名稱 說明
$arg_name 請求中的name引數
$args 請求中的引數
$binary_remote_addr 遠端地址的二進位制表示
$body_bytes_sent 已傳送的訊息體位元組數
$content_length HTTP請求資訊裡的"Content-Length"
$content_type 請求資訊裡的"Content-Type"
$document_root 針對當前請求的根路徑設定值
$document_uri 與$uri相同; 比如 /test2/test.php
$host 請求資訊中的"Host",如果請求中沒有Host行,則等於設定的伺服器名
$hostname 機器名使用 gethostname系統呼叫的值
$http_cookie cookie 資訊
$http_referer 引用地址
$http_user_agent 客戶端代理資訊
$http_via 最後一個訪問伺服器的Ip地址。
$http_x_forwarded_for 相當於網路訪問路徑
$is_args 如果請求行帶有引數,返回“?”,否則返回空字串
$limit_rate 對連線速率的限制
$nginx_version 當前執行的nginx版本號
$pid worker程序的PID
$query_string 與$args相同
$realpath_root 按root指令或alias指令算出的當前請求的絕對路徑。其中的符號連結都會解析成真是檔案路徑
$remote_addr 客戶端IP地址
$remote_port 客戶端埠號
$remote_user 客戶端使用者名稱,認證用
$request 使用者請求
$request_body 這個變數(0.7.58+)包含請求的主要資訊。在使用proxy_pass或fastcgi_pass指令的location中比較有意義
$request_body_file 客戶端請求主體資訊的臨時檔名
$request_completion 如果請求成功,設為"OK";如果請求未完成或者不是一系列請求中最後一部分則設為空
$request_filename 當前請求的檔案路徑名,比如/opt/nginx/www/test.php
$request_method 請求的方法,比如"GET"、"POST"等
$request_uri 請求的URI,帶引數
$scheme 所用的協議,比如http或者是https
$server_addr 伺服器地址,如果沒有用listen指明伺服器地址,使用這個變數將發起一次系統呼叫以取得地址(造成資源浪費)
$server_name 請求到達的伺服器名
$server_port 請求到達的伺服器埠號
$server_protocol 請求的協議版本,"HTTP/1.0"或"HTTP/1.1"
$uri 請求的URI,可能和最初的值有不同,比如經過重定向之類的

其實這還不是全部,Nginx在不停迭代更新是一個原因,還有一個是有些變數太冷門,藉助它們,會有很多玩法。