Nginx Rewrite語法詳解

2022-07-19 22:45:20 字數 1939 閱讀 2926

重寫中用到的指令

if  (條件) {}  設定條件,再進行重寫

set #設定變數

return #返回狀態碼  return403;

break #跳出rewrite

rewrite #重寫

if  語法格式

if 空格 (條件)

條件又怎麼寫?

答:3種寫法

1: 「=」來判斷相等, 用於字串比較

2: 「~」 用正則來匹配(此處的正則區分大小寫)

~* 不區分大小寫的正則

3: -f -d -e來判斷是否為檔案,為目錄,是否存在.

例子:if  ($remote_addr = 192.168.1.100)

注, 此處還要加break,

注意:用url重寫時, 正則裡如果有」{}」,正則要用雙引號包起來

重新中的乙個()內的正則代表後面的乙個變數$1,多個(),代表多個$1,$2 變數,這叫 正規表示式的後向引用

nginx的rewrite規則參考:

~ 為區分大小寫匹配

~* 為不區分大小寫匹配

!~和!~*分別為區分大小寫不匹配及不區分大小寫不匹

-f和!-f用來判斷是否存在檔案

-d和!-d用來判斷是否存在目錄

-e和!-e用來判斷是否存在檔案或目錄

-x和!-x用來判斷檔案是否可執行

last 相當於apache裡的[l]標記,表示完成rewrite,呵呵這應該是最常用的

break 終止匹配, 不再匹配後面的規則

redirect 返回302臨時重定向 位址列會顯示跳轉後的位址

permanent 返回301永久重定向 位址列會顯示跳轉後的位址

nginx有以下內建變數

$args, 請求中的引數;

$content_length, http請求資訊裡的"content-length";

$content_type, 請求資訊裡的"content-type";

$document_root, 針對當前請求的根路徑設定值;

$document_uri, 與$uri相同;

$host, 請求資訊中的"host",如果請求中沒有host行,則等於設定的伺服器名;

$limit_rate, 對連線速率的限制;

$request_method, 請求的方法,比如"get"、"post"等;

$remote_addr, 客戶端位址;

$remote_port, 客戶端埠號;

$remote_user, 客戶端使用者名稱,認證用;

$request_filename, 當前請求的檔案路徑名

$request_body_file

$request_uri, 請求的uri,帶查詢字串;

$query_string, 與$args相同;

$scheme, 所用的協議,比如http或者是https,比如rewrite  ^(.+)$  $scheme:  redirect;

$server_protocol, 請求的協議版本,"http/1.0"或"http/1.1";

$server_addr, 伺服器位址,如果沒有用listen指明伺服器位址,使用這個變數將發起一次系統呼叫以取得位址(造成資源浪費);

$server_name, 請求到達的伺服器名;

$server_port, 請求到達的伺服器端口號;

$uri, 請求的uri,可能和最初的值有不同,比如經過重定向之類的。

這些變數可以用在rewrite規則裡,也可以列印日誌的時候用

nginx Rewrite語法詳解

重寫中用到的指令 if 條件 設定條件,再進行重寫 set 設定變數 return 返回狀態碼 break 跳出rewrite rewrite 重寫 跳轉的話url都變了,變成重新http請求404.html,而內部rewrite,上下文沒變,就是說 fastcgi script name 仍然是 ...

nginx rewrite 語法詳解

rewrite 重寫 重寫中用到的指令 if 條件 設定條件 再進行重寫 set 設定變數 return 返回狀態碼 break 跳出rewrite rewrite 重寫 if 語法格式 if 空格 條件 條件又怎麼寫?答 3種寫法 1 來判斷相等 用於字串比較 2 用正則來匹配 此處的正則區分大小...

tensorflow語法詳記(一)

最近一直在學習tensorflow的理論知識,趁著複習的機會,做乙個小整理,方便自己以後查閱。其中加粗部分是需要自己輸入的。1 定義常量 tf.constant data name name 2 建立乙個計算圖 tf.graph 3 對當前預設計算圖的引用 tf.get default graph ...