nginx 裡的常用變數
1. 從請求行中解析到的變數
以訪問http://invo.com/nginx-var/request-line?a=1&b=2得到的結果為例,invo.com為測試的虛擬主機
變數 含義 示例
$request 整個請求行 GET /nginx-var/request-line?a=1&b=2 HTTP/1.1
$request_method 請求方法(如GET、POST) GET
$request_uri 完整的請求URI /nginx-var/request-line?a=1&b=2
$uri URI,除去查詢字串 /nginx-var/request-line
$document_uri 同$uri /nginx-var/request-line
$args 查詢字串 a=1&b=2
$query_string 同$args a=1&b=2
$server_protocol 請求協議(如HTTP/1.0 HTTP/1.1) HTTP/1.1
$arg_name 請求行中name引數的值 $arg_a = 1 , $arg_b = 2
說明: 這些變數在配置檔案中通常配合try_files指令和rewrite指令使用。
2. 從請求頭中解析到的變數
用Firefox的HttpRequester外掛,新增Cookie為CA=abc;CB=123,Referer為http://invo.com的請求頭,
以訪問地址http://invo.com/nginx-var/header-var得到的結果為例。
變數 含義 示例
$host 該變數按如下優先順序獲得:請求行中解析到的host、請求頭“Host”中的host、配置檔案中匹配到的server_name invo.com
$remote_addr 客戶端ip地址 127.0.0.1
$remote_port 客戶端埠 4204
$http_user_agent 使用者代理(“User-Agent”請求頭的值) Mozilla/5.0 (Windows NT 6.1; rv:50.0) Gecko/20100101 Firefox/50.0
$http_cookie “Cookie”請求頭的值 CA=abc;CB=123
$cookie_name Cookie中名為name的值 $cookie_CA=abc, $cookie_CB=123
$http_referer “Http-Referer”請求頭的值 http://invo.com
說明: $host、$remote_addr、$http_user_agent、$http_referer在配置檔案中經常用到,可以根據這些變數來決定如何處理請求。以上變數也經常用在log_format指令中,這些變數的值將記錄在日誌檔案,用於分析日誌。有一次特意查看了下日誌檔案,發現同一個客戶端每次請求伺服器的埠($remote_port)會變化,推斷公司網路的型別為對稱型NAT。
3. 其它內建變數
變數 含義 示例
$body_bytes_sent 發給客戶端的資料大小,以位元組計,不包括http報頭
$bytes_sent 發給客戶端的資料大小,以位元組計
$status http響應狀態碼
$request_time 請求處理時間
$upstream_response_time 從與upstream建立連線到收到最後一個位元組所經歷的時間(nginx做反向代理伺服器時可用)
$upstream_connect_time 與upstream建立連線所消耗的時間(nginx做反向代理伺服器時可用)
說明:以上變數通常用於日誌配置中,用於統計流量和監視伺服器效能。
4、本文中用到的配置內容
相關nginx配置內容如下,其中用到的echo指令需要用到第三方echo模組,推薦使用OpenResty,各種常用第三方模組都有。
listen 80;
server_name invo.com invo.com;
root "D:/phpStudy/WWW/invo";
access_log logs/access.log invo_com;
location / {
index index.html index.htm index.php;
#autoindex on;
}
# variables parsed from request line
location /nginx-var/request-line {
default_type text/html;
echo "Request Line: $request<br/>";
echo "Request Method: $request_method<br/>";
echo "Full Uri: $request_uri<br/>";
echo "uri: $uri<br/>";
echo "args: $args<br/>";
echo "Server Protocol: $server_protocol<br/>";
echo "Document Uri: $document_uri<br/>";
echo "Query_String: $query_string<br/>";
echo "arg_a=$arg_a, arg_b=$arg_b";
}
# variables parsed from http header;
location /nginx-var/header-var {
default_type text/html;
echo "Host: $host<br/>";
echo "Remote Addr: $remote_addr<br/>";
echo "Remote Port: $remote_port<br/>";
echo "Content-Type: $content_type<br/>";
echo "User-Agent: $http_user_agent<br/>";
echo "Http-Cookie: $http_cookie<br/>";
echo "cookie_CA=$cookie_CA, cookie_CB=$cookie_CB<br/>";
echo "Http-Referer: $http_referer<br/>";
}
原文連結:https://blog.csdn.net/chunyuan314/article/details/55056539