Nginx:透過ngx_http_rewrite_module模組支援URL重寫、支援if條件判斷,但不支援else
跳轉:從一個location跳到另一個location,循環最多可以執行10次,超過後nginx將回傳500錯誤
PCRE支援:perl相容正規表示式的語法規則符合
#重寫模組set指令:建立新的變數並為其賦值
①執行server快裡面的rewriter指令
②執行location匹配
③執行選定的location中的rewrite指令
調整使用者瀏覽的URL,看起來更規範,合乎開發及產品人員的需求
為了讓搜尋引擎搜尋網站內容及使用者體驗更好,企業會將動態URL位址偽裝成靜態位址提供服務
網址換新網域後,讓舊的訪問跳到新的網域;例如,造訪京東的360buy.com 會跳到jd.com
服務端某些業務調整,例如根據特殊變數、目錄、客戶端的資訊進行URL調整等
語法rewrite
regex:表示正規符合規則
replacement:表示跳轉後的內容
flag:表示rewrite 支援的flag 標記
flag標記說明:
location /images/abc/1.html {}匹配/images/abc/1.html 文件,如果和正規~ /images/abc/1.html 相比,正規優先順序更高優先權總結:(location = 完整路徑) > (location ^~ 路徑) > (location ,* 正規順序) > (location 部分起始路徑) > ;(location /)5.符合規則定義①第一個必選規則:直接符合網站根,透過網域造訪網站首頁比較頻繁,使用這會加速處理,比如說官網
可以是靜態首頁,也可以直接轉送後端「應用伺服器」——>PHP、Apache(應用程式伺服器如下圖所示)
location / { root html; index index.html index.html; }
②第二個必選規則:
處理靜態檔案請求,這是nginx作為http伺服器的強項(①靜態請求處理的能力②高並發處理能力③資源消耗較低)
有兩種設定模式,目錄匹配或後綴匹配,任選其一或搭配使用
location ^~ /static/ { root /webroot/static/; } location ~* \.(html|gif|jpg|jpeg|png|css|js|ico)$ { root /webroot/res/ ; }
③第三個必選規則:
就是通用規則,例如用來轉發帶.php、.jsp後綴的動態請求到後端應用伺服器
非靜態檔案請求就預設是動態請求(跳轉/反向代理)
upstream tomcat_server { 192.168.126.12:80 192.168.126.23:80 }
location / { proxy_ pass http://tomcat_server;
1.比較rewrite和location
相同點:都實作跳躍
不同點:rewrite是在同一網域內更改取得資源的路徑
location是對一類路徑做控制存取或反向代理,也可以proxy_pass到其他機器
2.rewrite會寫在location裡,執行順序
執行server區塊裡面的rewrite指令
執行location符合
執行選取的location中的rewrite指令
3.location優先權是怎麼排列的?
符合某個特定檔案
(location = 完整路徑) > (location ^~ 完整路徑) > (location ~* 完整路徑) > (location ~ 完整路徑)> (location /)
用目錄做匹配訪問某個檔案
(location = 目錄) > (location ^~ 目錄) > (location ~ 目錄) > (location ~* 目錄)> (location /)
4.檔案、目錄為何只會在區不區分大小寫上會有變動
正規表達式:目的是為了盡量精確的匹配
文件——>盡量精確匹配,區分大小寫精確,不區分更為精確
目錄——>盡量精確匹配,區分大小寫更為精確,優先權更高
以上是Nginx中location匹配及rewrite重寫跳轉的方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!