欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

解讀Nginx變量字段大全

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

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

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

一、請求信息變量

變量名描述
$host請求中的主機名(如example.com),優(yōu)先使用請求行的主機名,否則使用 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é)為單位)。這個變量包含了整個 HTTP 請求的所有部分:請求行、請求頭和請求體。它在日志分析、流量監(jiān)控和安全防護等場景中非常有用。

二、客戶端信息變量

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

三、服務器信息變量

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

四、響應信息變量

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

五、時間相關變量

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

六、連接相關變量

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

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

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

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

八、高級變量

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

請求保留在upstream隊列中的時間。

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

$http_x_forwarded_for

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

九、自定義變量

通過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;
}

注意事項

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

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

總結(jié)

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

相關文章

最新評論