Nginx 內建繫結變數
阿新 • • 發佈:2018-12-14
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
在不停迭代更新是一個原因,還有一個是有些變數太冷門,藉助它們,會有很多玩法。