Nginx 變數獲取及判斷

2021-10-14 14:16:37 字數 4032 閱讀 6995

1、正規表示式匹配:

==:等值比較;

~:判斷匹配與否時區分字元大小寫;

~*:判斷匹配與否時不區分字元大小寫;

!~:與指定正規表示式模式不匹配時返回「真」,判斷匹配與否時區分字元大小寫;

!~*:與指定正規表示式模式不匹配時返回「真」,判斷匹配與否時不區分字元大小寫;

2、檔案及目錄匹配判斷:

-f, !-f:判斷指定的路徑是否為存在且為檔案;

-d, !-d:判斷指定的路徑是否為存在且為目錄;

-e, !-e:判斷指定的路徑是否存在,檔案或目錄均可;

-x, !-x:判斷指定路徑的檔案是否存在且可執行;

$args                    #請求中的引數值

$query_string #同 $args

$arg_name #get請求中name的值

$is_args #如果請求中有引數,值為"?",否則為空字串

$uri #請求中的當前uri(不帶請求引數,引數位於$args),可以不同於瀏覽器傳遞的$request_uri的值,它可以通過內部重定向,或者使用index指令進行修改,$uri不包含主機名,如"/foo/bar.html"。

$document_uri #同 $uri

$document_root #當前請求的文件根目錄或別名

$host #優先順序:http請求行的主機名》"host"請求頭欄位》符合請求的伺服器名.請求中的主機頭欄位,如果請求中的主機頭不可用,則為伺服器處理請求的伺服器名稱

$hostname #主機名

$https #如果開啟了ssl安全模式,值為"on",否則為空字串。

$binary_remote_addr #客戶端位址的二進位制形式,固定長度為4個位元組

$body_bytes_sent #傳輸給客戶端的位元組數,響應頭不計算在內;這個變數和apache的mod_log_config模組中的"%b"引數保持相容

$bytes_sent #傳輸給客戶端的位元組數

$connection #tcp連線的序列號

$connection_requests #tcp連線當前的請求數量

$content_length #"content-length" 請求頭欄位

$content_type #"content-type" 請求頭欄位

$cookie_name #cookie名稱

$limit_rate #用於設定響應的速度限制

$msec #當前的unix時間戳

$nginx_version #nginx版本

$pid #工作程序的pid

$pipe #如果請求來自管道通訊,值為"p",否則為"."

$proxy_protocol_addr #獲取**訪問伺服器的客戶端位址,如果是直接訪問,該值為空字串

$realpath_root #當前請求的文件根目錄或別名的真實路徑,會將所有符號連線轉換為真實路徑

$remote_addr #客戶端位址

$remote_port #客戶端埠

$remote_user #用於http基礎認證服務的使用者名稱

$request #代表客戶端的請求位址

$request_body #客戶端的請求主體:此變數可在location中使用,將請求主體通過proxy_pass,fastcgi_pass,uwsgi_pass和scgi_pass傳遞給下一級的**伺服器

$request_body_file #將客戶端請求主體儲存在臨時檔案中。檔案處理結束後,此檔案需刪除。如果需要之一開啟此功能,需要設定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_completion #如果請求成功,值為"ok",如果請求未完成或者請求不是乙個範圍請求的最後一部分,則為空

$request_filename #當前連線請求的檔案路徑,由root或alias指令與uri請求生成

$request_length #請求的長度 (包括請求的位址,http請求頭和請求主體)

$request_method #http請求方法,通常為"get"或"post"

$request_time #處理客戶端請求使用的時間,單位為秒,精度毫秒; 從讀入客戶端的第乙個位元組開始,直到把最後乙個字元傳送給客戶端後進行日誌寫入為止。

$request_uri #這個變數等於包含一些客戶端請求引數的原始uri,它無法修改,請檢視$uri更改或重寫uri,不包含主機名,例如:"/cnphp/test.php?arg=freemouse"

$scheme #請求使用的web協議,"http" 或 "https"

$server_name #伺服器名

$server_port #伺服器端口

$server_protocol #伺服器的http版本,通常為 "http/1.0" 或 "http/1.1"

$status #http響應**

$time_iso8601 #伺服器時間的iso 8610格式

$time_local #伺服器時間(log format 格式)

$cookie_name #客戶端請求header頭中的cookie變數,字首"$cookie_"加上cookie名稱的變數,該變數的值即為cookie名稱的值

$http_name #匹配任意請求頭欄位;變數名中的後半部分name可以替換成任意請求頭欄位,如在配置檔案中需要獲取http請求頭:"accept-language",$http_accept_language即可

$http_cookie        #請求的所有cookie

$http_host #請求位址,即瀏覽器中你輸入的位址(ip或網域名稱)

$http_user_agent #使用者終端瀏覽器等資訊

$http_x_forwarded_for #客戶端的ip和**伺服器的ip,以逗號隔開;可偽造

$http_x_forwarded_proto #請求的協議

$sent_http_name #可以設定任意http響應頭欄位;變數名中的後半部分name可以替換成任意響應頭欄位,如需要設定響應頭content-length,$sent_http_content_length即可

nginx之if判斷 變數設定 1

一 if指令 if 空格 條件 來判斷相等,用於字串比較 用正則來匹配 此處的正則區分大小寫 不區分大小寫的正則 f 判斷請求的檔案是否存在 d 請求的目錄是否存在 e 檔案或目錄是否存在 x 檔案是否可執行 二 設定變數 set var hello 三 有正規表示式匹配時,並且表示式有 則 1 2...

nginx內建全域性變數及含義

名稱 版本 說明 變數列表 於檔案 ngx http variables args 1.0.8 請求中的引數 binary remote addr 1.0.8 遠端位址的二進位制表示 body bytes sent 1.0.8 已傳送的訊息體位元組數 content length 1.0.8 htt...

nginx內建全域性變數及含義

名稱 版本 說明 變數列表 於檔案 ngx http variables args 1.0.8 請求中的引數 binary remote addr 1.0.8 遠端位址的二進位制表示 body bytes sent 1.0.8 已傳送的訊息體位元組數 content length 1.0.8 htt...