配置基于nginx伺服器的網站時,必然會用到 nginx内置變量 ,下面筆者将它整理成清單,把最新版本的變量列出來,以友善做配置時查詢
内置變量存放在 ngx_http_core_module 子產品中,變量的命名方式和apache 伺服器變量是一緻的。總而言之,這些變量代表着用戶端請求頭的内容,例如$http_user_agent, $http_cookie, 等等。下面是nginx支援的所有内置變量:
<code>$arg_name</code>
請求中的的參數名,即“?”後面的arg_name=arg_value形式的arg_name
<code>$args</code>
請求中的參數值
<code>$binary_remote_addr</code>
用戶端位址的二進制形式, 固定長度為4個位元組
<code>$body_bytes_sent</code>
傳輸給用戶端的位元組數,響應頭不計算在内;這個變量和Apache的mod_log_config子產品中的“%B”參數保持相容
<code>$bytes_sent</code>
傳輸給用戶端的位元組數 (1.3.8, 1.2.5)
<code>$connection</code>
TCP連接配接的序列号 (1.3.8, 1.2.5)
<code>$connection_requests</code>
TCP連接配接目前的請求數量 (1.3.8, 1.2.5)
<code>$content_length</code>
“Content-Length” 請求頭字段
<code>$content_type</code>
“Content-Type” 請求頭字段
<code>$cookie_name</code>
cookie名稱
<code>$document_root</code>
目前請求的文檔根目錄或别名
<code>$document_uri</code>
同 $uri
<code>$host</code>
優先級如下:HTTP請求行的主機名>”HOST”請求頭字段>符合請求的伺服器名
<code>$hostname</code>
主機名
<code>$http_name</code>
比對任意請求頭字段; 變量名中的後半部分“name”可以替換成任意請求頭字段,如在配置檔案中需要擷取http請求頭:“Accept-Language”,那麼将“-”替換為下劃線,大寫字母替換為小寫,形如:$http_accept_language即可。
<code>$https</code>
如果開啟了SSL安全模式,值為“on”,否則為空字元串。
<code>$is_args</code>
如果請求中有參數,值為“?”,否則為空字元串。
<code>$limit_rate</code>
用于設定響應的速度限制,詳見 limit_rate。
<code>$msec</code>
目前的Unix時間戳 (1.3.9, 1.2.6)
<code>$nginx_version</code>
nginx版本
<code>$pid</code>
工作程序的PID
<code>$pipe</code>
如果請求來自管道通信,值為“p”,否則為“.” (1.3.12, 1.2.7)
<code>$proxy_protocol_addr</code>
擷取代理通路伺服器的用戶端位址,如果是直接通路,該值為空字元串。(1.5.12)
<code>$query_string</code>
同 $args
<code>$realpath_root</code>
目前請求的文檔根目錄或别名的真實路徑,會将所有符号連接配接轉換為真實路徑。
<code>$remote_addr</code>
用戶端位址
<code>$remote_port</code>
用戶端端口
<code>$remote_user</code>
用于HTTP基礎認證服務的使用者名
<code>$request</code>
代表用戶端的請求位址
<code>$request_body</code>
用戶端的請求主體
此變量可在location中使用,将請求主體通過proxy_pass, fastcgi_pass, uwsgi_pass, 和 scgi_pass傳遞給下一級的代理伺服器。
<code>$request_body_file</code>
将用戶端請求主體儲存在臨時檔案中。檔案處理結束後,此檔案需删除。如果需要之一開啟此功能,需要設定client_body_in_file_only。如果将次檔案傳遞給後端的代理伺服器,需要禁用request body,即設定proxy_pass_request_body off,fastcgi_pass_request_body off, uwsgi_pass_request_body off, or scgi_pass_request_body off 。
<code>$request_completion</code>
如果請求成功,值為”OK”,如果請求未完成或者請求不是一個範圍請求的最後一部分,則為空。
<code>$request_filename</code>
目前連接配接請求的檔案路徑,由root或alias指令與URI請求生成。
<code>$request_length</code>
請求的長度 (包括請求的位址, http請求頭和請求主體) (1.3.12, 1.2.7)
<code>$request_method</code>
HTTP請求方法,通常為“GET”或“POST”
<code>$request_time</code>
處理用戶端請求使用的時間 (1.3.9, 1.2.6); 從讀取用戶端的第一個位元組開始計時。
<code>$request_uri</code>
這個變量等于包含一些用戶端請求參數的原始URI,它無法修改,請檢視$uri更改或重寫URI,不包含主機名,例如:”/cnphp/test.php?arg=freemouse”。
<code>$scheme</code>
請求使用的Web協定, “http” 或 “https”
<code>$sent_http_name</code>
可以設定任意http響應頭字段; 變量名中的後半部分“name”可以替換成任意響應頭字段,如需要設定響應頭Content-length,那麼将“-”替換為下劃線,大寫字母替換為小寫,形如:$sent_http_content_length 4096即可。
<code>$server_addr</code>
伺服器端位址,需要注意的是:為了避免通路linux系統核心,應将ip位址提前設定在配置檔案中。
<code>$server_name</code>
伺服器名,www.cnphp.info
<code>$server_port</code>
伺服器端口
<code>$server_protocol</code>
伺服器的HTTP版本, 通常為 “HTTP/1.0” 或 “HTTP/1.1”
<code>$status</code>
HTTP響應代碼 (1.3.2, 1.2.2)
<code>$tcpinfo_rtt, $tcpinfo_rttvar, $tcpinfo_snd_cwnd, $tcpinfo_rcv_space</code>
用戶端TCP連接配接的具體資訊
<code>$time_iso8601</code>
伺服器時間的ISO 8610格式 (1.3.12, 1.2.7)
<code>$time_local</code>
伺服器時間(LOG Format 格式) (1.3.12, 1.2.7)
<code>$uri</code>
請求中的目前URI(不帶請求參數,參數位于$args),可以不同于浏覽器傳遞的$request_uri的值,它可以通過内部重定向,或者使用index指令進行修改,$uri不包含主機名,如”/foo/bar.html”。