1. 程式人生 > >使用nginx的rewrite功能搭建檔案服務

使用nginx的rewrite功能搭建檔案服務

背景:為了伺服器檔案的安全,不能將伺服器的檔案儲存路徑設計暴露出來,可以使用nginx的rewrite功能隱藏檔案的真實路徑

1.例子

rewrite “/pic/([0-9]{2})-([0-9]{2})-([0-9]{1,2})-C-([0-9]*).(png|gif|jpg|jpeg)$” /storage/bidding/20$1-$2/$3/Certification/$4.$5 last;

2.說明:

rewrite為固定關鍵字,表示開始進行rewrite匹配規則

第一個regex部分是 ([0-9]{2}) ,這是一個正則表示式,匹配域名後面的路徑地址,對應後面的第一個引數$1

replacement部分 $1,是取自regex部分()裡的內容。匹配成功後跳轉到的路徑。

flag部分 last標識重寫匹配結束。

3.regex 常用正則表示式說明字元描述

\ 將後面接著的字元標記為一個特殊字元或一個原義字元或一個向後引用。如“\n”匹配一個換行符,而“\$”則匹配“$”

^ 匹配輸入字串的起始位置

$ 匹配輸入字串的結束位置

* 匹配前面的字元零次或多次。如“ol*”能匹配“o”及“ol”、“oll”

+ 匹配前面的字元一次或多次。如“ol+”能匹配“ol”及“oll”、“oll”,但不能匹配“o”

? 匹配前面的字元零次或一次,例如“do(es)?”能匹配“do”或者“does”,"?"等效於"{0,1}"

. 匹配除“\n”之外的任何單個字元,若要匹配包括“\n”在內的任意字元,請使用諸如“[.\n]”之類的模式。

(pattern) 匹配括號內pattern並可以在後面獲取對應的匹配,常用$0...$9屬性獲取小括號中的匹配內容,要匹配圓括號字元需要\(Content\)

4.rewrite 廣泛的應用場景

Nginx的rewrite功能在企業裡應用非常廣泛:

可以調整使用者瀏覽的URL,看起來更規範,合乎開發及產品人員的需求。

為了讓搜尋引擎搜錄網站內容及使用者體驗更好,企業會將動態URL地址偽裝成靜態地址提供服務。

網址換新域名後,讓舊的訪問跳轉到新的域名上。例如,訪問京東的360buy.com會跳轉到jd.com

根據特殊變數、目錄、客戶端的資訊進行URL調整等