nginx常用的內建變數以及重定向

2021-08-29 07:13:21 字數 2330 閱讀 9363

一、nginx內建常用變數:

$arg_parameter#這個變數包含get請求中,如果有變數parameter時的值;

$args#這個變數等於請求行中(get請求)的引數,例如foo=123&bar=blahblah; 

$query_string#與$args相同,二者的區別是args可以修改,query_string唯讀;

$binary_remote_addr #二進位制的客戶位址。

$body_bytes_sent #響應時送出的body位元組數數量。即使連線中斷,這個資料也是精確的。

$content_length #請求頭中的content-length欄位。

$content_type #請求頭中的content-type欄位。

$cookie_cookie #cookie cookie變數的值

$document_root #當前請求在root指令中指定的值。

$document_uri #與$uri相同。

$host #請求主機頭欄位,否則為伺服器名稱。

$is_args #如果有$args引數,這個變數等於」?」,否則等於」",空值。

$http_user_agent #客戶端agent資訊

$http_cookie #客戶端cookie資訊

$limit_rate #這個變數可以限制連線速率。

$request_body_file #客戶端請求主體資訊的臨時檔名。

$request_method #客戶端請求的動作,通常為get或post。

$remote_addr #客戶端的ip位址。

$remote_port #客戶端的埠。

$remote_user #已經經過auth basic module驗證的使用者名稱。

$request_completion #如果請求結束,設定為ok. 當請求未結束或如果該請求不是請求鏈串的最後乙個時,為空(empty)。

$request_method #get或post

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

$request_uri #包含請求引數的原始uri,不包含主機名,如:」/foo/bar.php?arg=baz」。不能修改。

$scheme #http方法(如http,https)。

$server_protocol #請求使用的協議,通常是http/1.0或http/1.1。

$server_addr #伺服器位址,在完成一次系統呼叫後可以確定這個值。

$server_name #伺服器名稱。

$server_port #請求到達伺服器的埠號。

$uri #不帶請求引數的當前uri,$uri不包含主機名,如」/foo/bar.html」。該值有可能和$request_uri 不一致。$request_uri是瀏覽器發過來的值。該值是rewrite後的值。例如做了internal redirects後。

二、重定向:

1、rewrite **只能匹配uri,無法匹配引數;如果要匹配引數需要用 if 語句匹配引數,然後進行重定向;

2、預設的情況下,nginx在進行rewrite後都會自動新增上舊位址中的引數部分,而這對於重定向到的新位址來說可能是多餘。

把 重定向到 

若按照預設的寫法:rewrite ^/test.php(.*) /new permanent;

重定向後的結果是:?para=***

如果改寫成:rewrite ^/test.php(.*) /new? permanent;

那結果就是:

2)假如又想保留某個特定的引數,那又該如何呢?

把&p=xx 重寫向到 ?p=xx

可以寫成:

rewrite ^/test.php /new?p=$arg_p? permanent;

總結:

rewrite  ^/test.php  /new  permanent;       //重寫向帶引數的位址

rewrite ^/test.php /new? permanent; //重定向後不帶引數

rewrite ^/test.php /new?id=$arg_id? permanent; //重定向後帶指定的引數

3)permanent 和 redirect區別:

nginx常用內建變數

內建變數存放在 ngx http core module 模組中,變數的命名方式和apache 伺服器變數是一致的。總而言之,這些變數代表著客戶端請求頭的內容,例如 http user agent,http cookie,等等。下面是nginx支援的所有內建變數 arg name 請求中的的引數名,...

nginx常用內建變數

args 請求中的引數值 query string 同 args arg name get請求中name的值 is args 如果請求中有引數,值為 否則為空字串 uri 請求中的當前uri 不帶請求引數,引數位於 args 可以不同於瀏覽器傳遞的 request uri的值,它可以通過內部重定向,...

nginx的內建變數

arg parameter http請求中某個引數的值。例 index.html?size 100,可以用 arg size獲取100 binary remote addr 二進位制格式的客戶端位址。body bytes sent 表示在向客戶端傳送的http響應中,包體部分的位元組數 conten...