Nginx運維之五 Nginx變數
阿新 • • 發佈:2018-11-06
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