亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

解讀Nginx變量字段大全

 更新時(shí)間:2025年07月03日 08:36:15   作者:alden_ygq  
這篇文章主要介紹了Nginx變量字段,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

Nginx 的變量系統(tǒng)功能強(qiáng)大,能夠捕獲請求、響應(yīng)和服務(wù)器狀態(tài)的各種信息。

以下是常用的 Nginx 變量分類整理:

一、請求信息變量

變量名描述
$host請求中的主機(jī)名(如example.com),優(yōu)先使用請求行的主機(jī)名,否則使用 server_name。
$request_methodHTTP 請求方法(如GET、POST)。
$request_uri完整的請求 URI(如/path?query=string)。
$uri解碼后的請求 URI,可能在處理過程中被修改(如/path)。
$args請求中的查詢字符串(如query=string)。
$query_string同$args。
$request_body請求體內(nèi)容,需在location中啟用proxy_pass或fastcgi_pass。
$content_type請求的 Content-Type 頭(如application/json)。
$content_length請求的 Content-Length 頭。
$request

記錄請求的URL和HTTP協(xié)議

$request_length用于記錄客戶端請求的總大?。ㄒ宰止?jié)為單位)。這個(gè)變量包含了整個(gè) HTTP 請求的所有部分:請求行、請求頭和請求體。它在日志分析、流量監(jiān)控和安全防護(hù)等場景中非常有用。

二、客戶端信息變量

變量名描述
$remote_addr客戶端 IP 地址。
$remote_port客戶端端口號。
$http_user_agent客戶端 User-Agent 頭(如瀏覽器信息)。
$http_referer客戶端 Referer 頭(來源頁面)。
$http_cookie客戶端 Cookie 頭。

三、服務(wù)器信息變量

變量名描述
$server_addr服務(wù)器 IP 地址。
$server_port服務(wù)器端口號。
$server_name匹配請求的 server_name。
$scheme請求協(xié)議(http或https)。
$server_protocol請求協(xié)議版本(如HTTP/1.1)。

四、響應(yīng)信息變量

變量名描述
$status響應(yīng)狀態(tài)碼(如200、404)。
$body_bytes_sent發(fā)送給客戶端的響應(yīng)體字節(jié)數(shù)(不包含響應(yīng)頭)。
$bytes_sent用于記錄發(fā)送給客戶端的總字節(jié)數(shù),包括響應(yīng)頭和響應(yīng)體。這個(gè)變量在日志記錄、流量統(tǒng)計(jì)和性能監(jiān)控中非常有用。
$sent_http_*自定義響應(yīng)頭(如$sent_http_content_type)。

五、時(shí)間相關(guān)變量

變量名描述
$request_time請求處理時(shí)間(單位:秒,精確到毫秒)。
$msec當(dāng)前時(shí)間(單位:秒,精確到毫秒)。
$time_iso8601ISO 8601 格式的時(shí)間(如2023-01-01T12:00:00+08:00)。
$time_local本地時(shí)間(如01/Jan/2023:12:00:00 +0800)。

六、連接相關(guān)變量

變量名描述
$connection連接序列號。
$connection_requests當(dāng)前連接上的請求數(shù)量。
$keepalive_requests持久連接上的請求數(shù)量。
$pipe

用于指示請求的處理方式是通過管道(piped)還是緩沖(buffered)。這個(gè)變量主要用于調(diào)試和性能分析,特別是在處理大文件或代理請求時(shí)。

七、Nginx 內(nèi)置變量

變量名描述
$arg_*獲取請求參數(shù)(如$arg_name獲取?name=value中的value)。
$cookie_*獲取 Cookie 值(如$cookie_session)。
$http_*獲取任意請求頭(如$http_accept)。
$sent_http_*設(shè)置響應(yīng)頭(如add_header Cache-Control $sent_http_cache_control)。

八、高級變量

變量名描述
$upstream_addr上游服務(wù)器地址(如代理后端的 IP: 端口)。
$upstream_response_time上游服務(wù)器響應(yīng)時(shí)間(多個(gè)上游時(shí)用逗號分隔)。
$uri_filenameURI 中的文件名部分(如/path/file.txt中的file.txt)。
$request_id生成唯一請求 ID(用于日志追蹤)。
$upstream_connect_timeNginx與后游服務(wù)器建立連接所消耗的時(shí)間,其中包含連接握手的時(shí)間,單位為秒。
$upstream_header_time接收到后端服務(wù)器響應(yīng)頭花費(fèi)的時(shí)間。
$upstream_queue_time

請求保留在upstream隊(duì)列中的時(shí)間。

隊(duì)列:如果在處理請求時(shí)無法立即選擇upstream服務(wù)器,則該請求將被放入隊(duì)列中。如果隊(duì)列已滿,或者在timeout參數(shù)指定的時(shí)間段內(nèi)無法選擇將請求傳遞給的服務(wù)器,則會將502(錯(cuò)誤網(wǎng)關(guān))錯(cuò)誤返回給客戶端。

$http_x_forwarded_for

用于獲取客戶端的真實(shí) IP 地址。在經(jīng)過代理服務(wù)器(如負(fù)載均衡器、CDN)轉(zhuǎn)發(fā)的請求中,客戶端的原始 IP 會被記錄在 X-Forwarded-For 請求頭中,而非 $remote_addr(它記錄的是直接連接到 Nginx 的客戶端或代理服務(wù)器的 IP)。
$remote_user 用于獲取通過 HTTP 基礎(chǔ)認(rèn)證(Basic Authentication)驗(yàn)證的用戶名。它在需要用戶身份驗(yàn)證的場景中非常有用,但在使用時(shí)需要注意其生效條件和安全問題。
$http_authorization用于獲取客戶端發(fā)送的 Authorization 請求頭。這個(gè)變量在處理身份驗(yàn)證(如 Basic Auth、Bearer Token、OAuth 等)時(shí)非常重要。

九、自定義變量

通過set指令定義:

set $my_var "custom_value";

使用示例

在配置中引用變量:

log_format main '$remote_addr - $remote_user [$time_local] "$request" '
                '$status $body_bytes_sent "$http_referer" '
                '"$http_user_agent" "$http_x_forwarded_for"';

access_log /var/log/nginx/access.log main;

location /proxy {
    proxy_pass http://backend;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
}

注意事項(xiàng)

  1. 變量生效范圍:部分變量(如$request_body)僅在特定模塊或指令中可用。
  2. 性能影響:過度使用復(fù)雜變量(如正則表達(dá)式變量)可能影響性能。
  3. 變量嵌套:某些情況下變量嵌套(如$http_$variable)可能不生效,需用map指令處理。

如需查看完整官方文檔,可訪問:Nginx Variables

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論