天天看點

新版 nginx内置變量 大全解釋

配置基于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請求行的主機名&gt;”HOST”請求頭字段&gt;符合請求的伺服器名

<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”。