Nginx rewrite配置規則

2021-07-08 15:22:39 字數 1139 閱讀 4510

作為乙個被廣泛用於反向**的高效能web伺服器,nginx通常處於承接**流量的最前端。在實際專案中,經常會用nginx對特定的客戶端請求做改寫(即rewrite)後返回或將改寫後的request_url傳給後端real server做業務邏輯的處理。

本文是對nginx rewrite規則的學習筆記,參考資料主要來自官方文件。

syntax: rewrite regex replacement [flag];

default: —

context: server, location, if

上面是nginx文件對rewrite語法規則的說明,可知rewrite配置由4部分構成:

1)關鍵字rewrite表明這是乙個rewrite規則

2)正規表示式regex用於篩選滿足regex條件的client request uri

3)replacement用於替換uri中命中regex模式的部分

4)可選引數flag用於控制nginx對滿足本條rewrite規則的uri的後續處理行為

還可看到,rewrite配置可以位於server或location區塊(乙個典型的nginx配置檔案通常由http ==> server ==> location三個層級構成),還可以與if條件語法結合使用。

備註:nginx的if配置項在使用不當時會引發詭異行為(可參考nginx wiki的if is evil這篇文章),通常不推薦新手使用。

rewrite的語法規則比較簡單,但實際配置中,細節才會決定最終的rewrite行為是否符合我們的預期。

下面是對nginx rewrite行為的詳細說明,只有真正意識到可能存在的坑並搞懂這些規則細節,才能真正駕馭rewrite配置。

rewrite ^/users/(.*)$ /show?user=$1? break;
5)若regex部分包含「}」或「;」,則整個表示式都必須用單引號或雙引號括起來

以上規則中,flag引數的行為需要重點關注,尤其是last和break的區別。

nginx doc: rewrite

nginx doc: if directive

nginx wiki: if is evil

Nginx Rewrite 實現匹配泛網域名稱規則

nginx 是乙個高效能的 http 和 反向 伺服器,也是乙個 imap pop3 smtp 伺服器。nginx 是由 igor sysoev 為俄羅斯訪問量第二的 rambler.ru 站點開發的,它已經在該站點執行超過兩年半了。igor 將源 以類 bsd 許可證的形式發布 1 為了確保能在 ...

nginx rewrite基礎配置

rewirte主要的功能就是實現url的跳轉 為指定變數設定乙個值。該值可以包含文字 變數及其組合。syntax set variable value default context server,location,ifsyntax if condition default context serv...

Nginx rewrite功能配置

rewrite是nginx伺服器提供的乙個重要基本功能,是web伺服器產品中幾乎必備的功能。主要的作用是用來實現url的重寫。注意 nginx伺服器的rewrite功能的實現依賴於pcre的支援,因此在編譯安裝nginx伺服器之前,需要安裝pcre庫。nginx使用的是ngx http rewrit...