Nginx重寫規則

2022-07-30 20:18:08 字數 1641 閱讀 4946

nginx的重寫規則,依賴於pcre庫(perl compatible regular expression)。所以在安裝的時候一定要讓nginx支援這個功能,以及安裝pcre-devel,prce.

nginx rewrite 正規表示式匹配

大小寫匹配

~ 為區分大小寫匹配

~* 為不區分大小寫匹配

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

^~ uri    不使用正則匹配,可用使用元字元匹配

檔案及目錄匹配

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

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

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

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

flag標記

last本次重寫完成之後,重啟下一輪檢查 a[test]->a[test] ,注意如果重寫規則的uri中和本段的location中uri有重複,則注意避免死迴圈,死迴圈10次後會返回500錯誤。

break 終止匹配, 不再匹配本段的內容。a[test]->b[test] completed!

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

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

break和last區別舉例:

server \.wxl\.com')

}4. 目錄自動新增/,這個功能一般瀏覽器自動完成.如果使用index.html在二級目錄下,比如/data/bbs/index.html,如果輸入/data/bbs瀏覽器不會跳轉到主頁面index.html

location ^~ /bbs  

} 5. 目錄合併

如果uri中有很多目錄的話,將不利於搜尋引擎的搜尋,通過重寫規則可以讓uri目錄看起來很少。  

rewrite ^/server-([0-9]+)/ -([0-9]+)/ -([0-9]+)/ -([0-9]+)/\.html$ /server/$1/$2/$3/$4.html last;

break;

這樣位址列輸入

實際訪問的是

6.禁止訪問某個目錄

location ~ ^/(cron|templates)/  

7. 針對不同瀏覽器訪問不同的內容

8. 自定義某一型別的檔案的保質期時間

} 在http的請求頭部中refrer頭域中的值記錄訪問目標的源位址,因此在nginx中可以通過制定合法的url,來防止防盜煉。

語法: valid_referers none | blocked | server_names | string …;

none    **頭部為空的情況

blocked    防火牆刪除了http://或者 https://

server_names    制定特定的主機,支援匹配符,支援正則

例子:基於資源的防盜煉

nginx重寫規則配置

乙個示例 location location 順序 no優先順序 location location 完整路徑 location 路徑 location 正則順序 location 部分起始路徑 上面的匹配結果 按照上面的location寫法,以下的匹配示例成立 所以實際使用中,個人覺得至少有三個匹...

nginx URL 重寫if規則和nginx變數

url重寫 rewrite if指令 if condition 代表條件為真時的nginx操作 condition條件的寫法 1 變數名 如果變數的值為空,或者為以 0 開頭的任意字串,條件為假,其他則為真 if slow 2 使用 或者 比較變數的值 if request method post ...

nginx配置url重寫規則

在配置檔案的server塊中寫,如 server server因為301和302不能簡單的只返回狀態碼,還必須有重定向的url,這就是return指令無法返回301,302的原因了。這裡 last 和 break 區別有點難以理解 在location裡一旦返回break則直接生效並停止後續的匹配lo...