1. 程式人生 > >Nginx運維之五 Nginx變數

Nginx運維之五 Nginx變數

Nginx運維之五 Nginx變數

常見變數


#request line的請求引數(例如,在請求/index.html?width=400&height=200 中, $args 表示字串 width=400&height=200)
$args

#二進位制的客戶端地址,4位元組的IPv4地址或16位元組的IPv6地址
$binary_remote_addr
#傳送到客戶端的位元組數,不計算響應頭;此變數與 Apache模組mod_log_config的“%B”引數相容 $body_bytes_sent #傳送給客戶端的位元組數 $bytes_sent #連線序列號 $connection #當前通過連線進行的請求數量 $connection_requests #請求頭的“Content-Length” $content_length #請求頭的“Content-Type” $content_type #root or alias directive’s value for the current request $document_root
#同 $uri $document_uri #順序取值依次為 請求機器的host name 請求頭的“Host”欄位的host name 或者與請求匹配的伺服器名 $host # host name $hostname #如果連線以SSL模式執行為”on“,否則為空字串 $https #如果請求有引數則為“?”,否則為空字串 $is_args #setting this variable enables response rate limiting; see limit_rate $limit_rate #當前時間以毫秒解析度為單位 $msec #nginx version
$nginx_version #PID of the worker process $pid #流請求為“p” ,否則“.” $pipe #獲取代理訪問伺服器的客戶端地址,如果是直接訪問,該值為空字串 #必須先通過在listen指令中設定proxy_protocol引數來啟用PROXY協議。 $proxy_protocol_addr #獲取代理訪問伺服器的客戶端埠,如果是直接訪問,該值為空字串 #必須先通過在listen指令中設定proxy_protocol引數來啟用PROXY協議。 $proxy_protocol_port # 同$args $query_string ##當前請求的文件根目錄或別名的真實路徑,會將所有符號連線轉換為真實路徑 $realpath_root #client address $remote_addr #client port $remote_port #提供基本身份驗證的使用者名稱 $remote_user #完整的請求地址 $request #請求體,此變數可在location中使用,將請求主體通過proxy_pass,fastcgi_pass,uwsgi_pass和scgi_pass傳遞給下一級的代理伺服器 $request_body #將客戶端請求主體儲存在臨時檔案中。檔案處理結束後,此檔案需刪除。如果需要之一開啟此功能,需要設定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 $request_body_file #請求完成則為“OK”,否則為空字串 $request_completion #當前連線請求的檔案路徑,由root或alias指令與URI請求生成 $request_filename #生成的十六進位制唯一16位隨機請求識別符號 $request_id #請求長度(包括請求行、請求頭和請求體) $request_length #請求方法通常是“GET” or “POST” $request_method #以毫秒解析度為單位請求處理時間;從客戶端讀取第一位元組以來所經過的時間 $request_time #完整原始請求URI(帶引數) $request_uri #請求協議頭, “http” or “https” $scheme #接受請求的伺服器的地址,計算此變數的值通常需要一次系統呼叫。 為了避免系統呼叫,listen指令必須指定地址並使用bind引數。 $server_addr #接受請求的server名稱 $server_name #接受請求的server埠 $server_port #請求協議,通常是“HTTP/1.0”, “HTTP/1.1”, or “HTTP/2.0” $server_protocol #響應碼 $status #有關客戶端TCP連線的資訊; 在支援TCP_INFO套接字選項的系統上可用 $tcpinfo_rtt, $tcpinfo_rttvar, $tcpinfo_snd_cwnd, $tcpinfo_rcv_space #ISO 8601標準格式的本地時間 $time_iso8601 #公共日誌格式中的本地時間 $time_local #請求中的當前URI(不帶請求引數,引數位於$args),$uri的值可以在請求處理期間改變,例如。 當進行內部重定向時,或當使用索引檔案時。 $uri

拼接變數

$arg_NAME

$arg_NAME可以用來獲取GET請求中NAME引數的值,可以把字首$arg_加上任意GET請求中NAME引數名稱,該組合拼接變數的值即為GET請求中NAME引數的值。

/index.html?param=nicai,可以用$arg_param 取得 nicai 這個值.

$cookie_NAME

$cookie_NAME 可以匹配任意cookie中的變數,可以把字首$cookie_加上任意cookie變數的名稱,該組合拼接變數的值即為cookie名稱變數的值。
例如:

$cookie_id

$http_NAME

$http_NAME可以用來獲取任意請求頭欄位;可以把變數名中的後半部分NAME可以替換成任意請求頭欄位,則可以獲取當前請求頭欄位的取值,如在配置檔案中需要獲取http請求頭:Accept-Language,使用$http_accept_language即可 。

案例:

# 獲取cookie
$http_cookie 
 
$http_post

#獲取referer
$http_referer

#獲取user_agent
$http_user_agent

#獲取請求來源的IP地址
$http_x_forwarded_for

$sent_http_NAME

$sent_http_NAME可以用來獲取任意http響應頭欄位;變數名中的後半部分NAME可以替換成任意響應頭欄位,如需要獲取響應頭Content-length$sent_http_content_length即可

案例如下:

$sent_http_cache_control

$sent_http_connection

$sent_http_content_type

$sent_http_keep_alive

$sent_http_last_modified

$sent_http_location

$sent_http_transfer_encoding

$sent_trailer_NAME

$sent_trailer_name可以用來獲取任意http響應欄位;變數名中的後半部分NAME可以替換成任意響應欄位

備註:
Request-Line = Method SP Request-URI SP HTTP-Version CRLF
例:
GET /icwork/?search=product HTTP/1.1