nginx中的rewrite用法及例項
本文轉載自http://blog.csdn.net/xy2204/article/details/47749405,本來想自己總結的,但還是覺得人家寫的更好一些,所以就轉載下來。最下面附有我的一個小例子。
location表示式型別
- ~ 表示執行一個正則匹配,區分大小寫
- ~* 表示執行一個正則匹配,不區分大小寫
- ^~ 表示普通字元匹配。使用字首匹配。如果匹配成功,則不再匹配其他location。
- = 進行普通字元精確匹配。也就是完全匹配。
- @ 它定義一個命名的 location,使用在內部定向時,例如 error_page, try_files
location優先順序說明
在nginx的location和配置中location的順序沒有太大關係。正location表示式的型別有關。相同型別的表示式,字串長的會優先匹配。
以下是按優先順序排列說明:
- 等號型別(=)的優先順序最高。一旦匹配成功,則不再查詢其他匹配項。
- ^~型別表示式。一旦匹配成功,則不再查詢其他匹配項。
- 正則表示式型別(~ ~*)的優先順序次之。如果有多個location的正則能匹配的話,則使用正則表示式最長的那個。
- 常規字串匹配型別。按字首匹配。
location優先順序示例
配置項如下:
請求匹配示例
注意,以上的匹配和在配置檔案中定義的順序無關。
1. location正則寫法
一個示例:
- 已
=
開頭表示精確匹配
如 A 中只匹配根目錄結尾的請求,後面不能帶任何字串。 ^~
開頭表示uri以某個常規字串開頭,不是正則匹配- ~ 開頭表示區分大小寫的正則匹配;
- ~* 開頭表示不區分大小寫的正則匹配
- / 通用匹配, 如果沒有其它匹配,任何請求都會匹配到
順序不等於優先順序:
(location =) > (location 完整路徑) > (location ^~ 路徑) > (location ~,~* 正則順序) > (location 部分起始路徑) > (/)
上面的匹配結果。按照上面的location寫法,以下的匹配示例成立:
- / -> config A
精確完全匹配,即使/index.html也匹配不了 - /downloads/download.html -> config B
匹配B以後,往下沒有任何匹配,採用B - /images/1.gif -> configuration D
匹配到F,往下匹配到D,停止往下 - /images/abc/def -> config D
最長匹配到G,往下匹配D,停止往下
你可以看到 任何以/images/開頭的都會匹配到D並停止,FG寫在這裡是沒有任何意義的,H是永遠輪不到的,這裡只是為了說明匹配順序 - /documents/document.html -> config C
匹配到C,往下沒有任何匹配,採用C - /documents/1.jpg -> configuration E
匹配到C,往下正則匹配到E - /documents/Abc.jpg -> config CC
最長匹配到C,往下正則順序匹配到CC,不會往下到E
實際使用建議
所以實際使用中,個人覺得至少有三個匹配規則定義,如下:
參考:
2. Rewrite規則
rewrite功能就是,使用nginx提供的全域性變數或自己設定的變數,結合正則表示式和標誌位實現url重寫以及重定向。rewrite只能放在server{},location{},if{}中,並且只能對域名後邊的除去傳遞的引數外的字串起作用,例如http://seanlook.com/a/we/index.PHP?id=1&u=str
只對/a/we/index.php
重寫。語法rewrite
regex replacement [flag];
如果相對域名或引數字串起作用,可以使用全域性變數匹配,也可以使用proxy_pass反向代理。
表明看rewrite和location功能有點像,都能實現跳轉,主要區別在於rewrite是在同一域名內更改獲取資源的路徑,而location是對一類路徑做控制訪問或反向代理,可以proxy_pass到其他機器。很多情況下rewrite也會寫在location裡,它們的執行順序是:
-
相關推薦
nginx中的rewrite用法及例項
本文轉載自http://blog.csdn.net/xy2204/article/details/47749405,本來想自己總結的,但還是覺得人家寫的更好一些,所以就轉載下來。最下面附有我的一個小例子。 location表示式型別 ~ 表示執行一
nginx中rewrite用法
rate 條件判斷 特殊字符 服務器名稱 區別 參數說明 正則表達 index.php 否則 nginx中rewrite用法一、rewrite規則rewrite功能就是使用nginx提供的全局變量或自己設置的變量,結合正則表達式和標誌位實現url重寫以及重定向。rewrit
SQL 中函式 REPLACE() 的用法及例項
一、定義: 官方語法: REPLACE ( string_expression , string_pattern , string_replacement ) 引數含義: string_expression 要搜尋的字串表示式。string_expression 可以
SQL中SUBSTRING函式的用法及例項解析
一、定義:SQL 中的 substring 函式是用來擷取字串中的一部分字元。這個函式的名稱在不同的資料庫中不完全一樣。 MySQL: SUBSTR( ), SUBSTRING( ) Oracle: SUBSTR( ) SQL Server: SUB
【Java學習筆記之二十二】解析接口在Java繼承中的用法及實例分析
ani 復制代碼 ads compute 現在 target body 常量 實現接口 一、定義 Java接口(Interface),是一系列方法的聲明,是一些方法特征的集合,一個接口只有方法的特征沒有方法的實現,因此這些方法可以在不同的地方被不同的類實現,而這些實現可以具
nginx中location配置及匹配詳解
back amp 告訴 正則表達式 順序 win http 方法 ext nginx中location配置及匹配詳解1、location語法規則 Location 基礎知識1.location 是在 server 塊中配置。2.可以根據不同的 URI 使用不同的配置(loc
Android開發中XRecyclerview用法及遇到的一些問題
解決 pos sage head ebe 專業 剛才 adapt 只需要 目前通過xrecyclerview的開源代碼來實現系列功能,加載數據傳入type,值為1,2,3,分別表示初次加載,下拉刷新數據,上拉加載更多數據操作,刷新數據只需要重新放入數據,然後notifyDa
Java中compareTo用法及原始碼解析
最近遇到一個問題,在日期比較的時候,很麻煩,因為日期比較沒有大於等於,只有大於或者小於,這就導致在比較時間的時候特別麻煩,而且還要由string轉成date格式才能比較,下面是我使用compareTo比較時間字串的程式碼: String putStartTime = Date
tf.tile()用法及例項
tf.tile( input, #輸入 multiples, #某一維度上覆制的次數 name=None ) 例項 import tensorflow as tf a = tf.tile([1,2,3],[2]) b = tf.tile([[
Mysql中Join用法及優化
Join的幾種型別 笛卡爾積(交叉連線) 如果A表有n條記錄,B表有m條記錄,笛卡爾積產生的結果就會產生n*m條記錄。在MySQL中可以為CROSS JOIN或者省略CROSS即JOIN如 SELECT * FROM table1 CROSS JOIN table2&
易語言多項選擇用法及例項
哈哈.最近發現個好玩的易語言命令啊...相當於幾個如果真 就是多項選擇這個命令...看下多項選擇的說明 呼叫格式: 〈通用型〉 多項選擇 (整數型 索引值,通用型 待選擇項資料,... ) - 系統核心支援庫->其他 英文名稱:choose 從引數列
STL中sort用法小例項
#include<iostream> #include<vector> #include<algorithm> using namespace std; #define stlforeach(type,iter,container) ty
FastJson中JSONObject用法及常用方法總結
SON協議使用方便,越來越流行,JSON的處理器有很多,這裡我介紹一下FastJson,FastJson是阿里的開源框架,被不少企業使用,是一個極其優秀的Json框架,Github地址: FastJson FastJson對於json格式字串的解析主要用到了下面三個類: 1.JSON:f
SQL SERVER case的用法及例項
1. 官方釋義 計算條件表示式,並返回多個可能的結果表示式之一。 CASE 簡單表示式,它通過將表示式與一組簡單的表示式進行比較來確定結果。 CASE 搜尋表示式,它通過計算一組布林表示式來確定結果。 這兩種格式都支援可選的 ELSE 引數。 CASE
linux中 export 用法及環境變數
Linux export命令用於設定或顯示環境變數。 在shell中執行程式時,shell會提供一組環境變數。export可新增,修改或刪除環境變數,供後續執行的程式使用。 一、語法如下: export [-fnp][變數名稱]=[變數設定值] 引數說明: -f 代表[
Java中foreach用法及常用集合操作
foreach語句是java5的新特徵之一,在遍歷陣列、集合方面,foreach為開發人員提供了極大的方便。 foreach語句是for語句的特殊簡化版本,但是foreach語句並不能完全取代for語句,然而,任何的foreach語句都可以改寫為for語句版本。 for
switch的用法及例項分析
switch的用法 其具有一定的形式 swith<表示式> { case<常量表達式1>:語句序列 1; case<常量表達式2>:語句序列 2; ... case<常量表達式i>
C#中keybd_event 用法及鍵碼參照
Windows提供了一個模擬鍵盤API函式Keybd_event(),該函式能觸發一個按鍵事件,也就是說會產生一個WM_KEYDOWN或WM_KEYUP訊息。 [DllImport("user32.dll", EntryPoint = "keybd_event")] pu
Map.Entry()中entryset()用法及Map遍歷
Map map=new HashMap();Iterator it=map.keySet().iterator();Object key;Object value;while(it.hasNext()){key=it.next();value=map.get(key);System.out.println(k
EXCEL 中自定義函式的應用(關於 XOR 在 EXCEL 中的用法 及 文字型數字求和)
EXCEL 中,能否同調用內建函式一樣在工作表中呼叫自已製作的自定義函式,出現對話方塊.同時也能做到像內建函式對話方塊裡的說明?答案是肯定的,下面舉例說明:題目: ①對文字型一系列數字進行求和(SUM()返回0) ②對數值型的一系列數字異或操作(EX