nginx中的路徑匹配location規(guī)則詳解
Nginx的路徑匹配規(guī)則
Nginx的匹配規(guī)則用location指令來實(shí)現(xiàn),Nginx 的location指令用于匹配請(qǐng)求的 URI(請(qǐng)求路徑),并根據(jù)匹配結(jié)果執(zhí)行特定的處理指令。location是實(shí)現(xiàn)動(dòng)靜分離、URL 重寫、反向代理等功能的核心模塊之一.
location匹配規(guī)則分類
location支持多種匹配模式,包括精確匹配、前綴匹配、正則匹配等
精確匹配(=)
優(yōu)先級(jí)最高。當(dāng)請(qǐng)求的URI與location后面的字符串完全相同時(shí),Nginx會(huì)選擇這個(gè)location塊進(jìn)行處理。(這個(gè)好理解,就是路徑完全匹配,一模一樣,優(yōu)先級(jí)最高)
示例
location = /favicon.ico {
# 處理/favicon.ico的請(qǐng)求
}只有當(dāng)請(qǐng)求URI嚴(yán)格為/favicon.ico時(shí),上述location塊才會(huì)被使用。
最長前綴匹配(^~)
第二優(yōu)先級(jí)。請(qǐng)求的URI以某個(gè)location后面的字符串開頭,并且這個(gè)字符串是最長的(或者使用了^~修飾符),Nginx會(huì)選擇這個(gè)location塊。但請(qǐng)注意,^~修飾符實(shí)際上會(huì)停止后續(xù)的正則匹配搜索。
示例
location ^~ /hello {
return 601;
}
location ^~ /hellow {
return 602;
}
location ^~ /hello/world {
return 603;
}
location ~ /hello {
return 604;
}對(duì)于請(qǐng)求/hello,滿足 601和 604,實(shí)際返回601,就是因?yàn)閊~優(yōu)先級(jí)高于正則匹配;
對(duì)于請(qǐng)求/hellow,滿足 601和 602,實(shí)際返回602,因?yàn)樽铋L前綴匹配原則;
正則表達(dá)式匹配(~和~*)
第三優(yōu)先級(jí)。正則表達(dá)式匹配允許定義更復(fù)雜的URI匹配模式。~表示區(qū)分大小寫的正則匹配,而~*表示不區(qū)分大小寫的正則匹配。
Nginx會(huì)按照配置文件中的順序逐個(gè)檢查正則表達(dá)式location塊,直到找到第一個(gè)匹配的塊。因此,正則表達(dá)式的順序很重要。
示例:
location ~ \.(gif|jpg|png)$ {
# 處理以.gif、.jpg或.png結(jié)尾的請(qǐng)求(區(qū)分大小寫)
}
location ~* \.(GIF|JPG|PNG)$ {
# 處理以.GIF、.JPG或.PNG結(jié)尾的請(qǐng)求(不區(qū)分大小寫)
}對(duì)于請(qǐng)求/images/photo.jpg,第一個(gè)location塊將被匹配(如果請(qǐng)求是區(qū)分大小寫的)。
普通前綴匹配(無修飾符)
第四優(yōu)先級(jí)。普通前綴匹配也按照配置文件中出現(xiàn)的先后順序進(jìn)行匹配,先出現(xiàn)的location指令優(yōu)先匹配。
示例:
location /hello {
return 601;
}
location /hellow {
return 602;
}對(duì)于請(qǐng)求/hellow,滿足 601和 602,實(shí)際返回602,證明滿足長前綴匹配原則
默認(rèn)匹配(/)
優(yōu)先級(jí)最低。如果請(qǐng)求的URI與任何特定的location塊都不匹配,Nginx將使用默認(rèn)的location塊(如果有的話)。通常,默認(rèn)的location塊是一個(gè)不帶任何修飾符的location /塊。
示例:
location / {
# 處理所有其他請(qǐng)求
}總結(jié)
Nginx的location匹配規(guī)則優(yōu)先級(jí)可以總結(jié)為:
精確匹配(
=)最長前綴匹配(
^~),但會(huì)停止后續(xù)的正則匹配搜索正則表達(dá)式匹配(
~和~*),按配置順序普通前綴匹配(無修飾符),也按配置順序
默認(rèn)匹配(
/)
注意事項(xiàng)
正則匹配與順序:正則 location 的匹配順序很重要,因?yàn)?Nginx 會(huì)按照配置文件中定義的順序進(jìn)行匹配。
proxy_pass 的路徑替換:在配置 proxy_pass 時(shí),需要注意 location 后面的 URI 是否包含斜杠(/),這會(huì)影響請(qǐng)求的轉(zhuǎn)發(fā)路徑。通常建議 location 和 proxy_pass 要么都加斜杠,要么都不加。
性能優(yōu)化:將精確匹配放在前面,可以減少不必要的正則匹配,提高 Nginx 的處理效率。
到此這篇關(guān)于nginx中的路徑匹配location規(guī)則詳解的文章就介紹到這了,更多相關(guān)nginx 路徑匹配規(guī)則內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Nginx反向代理location和proxy_pass配置規(guī)則詳細(xì)總結(jié)
- Nginx的location的常見規(guī)則優(yōu)先級(jí)問題
- nginx 配置location匹配規(guī)則實(shí)例講解
- Nginx Location指令URI匹配規(guī)則詳解小結(jié)
- Nginx location匹配規(guī)則的方法示例
- nginx配置location總結(jié)location正則寫法及rewrite規(guī)則寫法
- 詳解nginx配置location總結(jié)及rewrite規(guī)則寫法
- 詳解Nginx location 匹配規(guī)則
- Nginx服務(wù)器的location指令匹配規(guī)則詳解
相關(guān)文章
詳解nginx服務(wù)器綁定域名和設(shè)置根目錄的方法
這篇文章主要介紹了詳解nginx服務(wù)器綁定域名和設(shè)置根目錄的方法,nginx服務(wù)器綁定域名以及設(shè)置根目錄非常方便,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-06-06
nginx利用lua語言實(shí)現(xiàn)軟waf的示例代碼
這篇文章主要介紹了nginx利用lua語言實(shí)現(xiàn)軟waf,文中通過代碼示例和圖文結(jié)合的方式給大家講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2024-03-03
Nginx服務(wù)器配置https安全協(xié)議的實(shí)現(xiàn)
HTTP是互聯(lián)網(wǎng)中最常用的協(xié)議,用于從服務(wù)器傳輸超文本到瀏覽器,HTTPS是HTTP的安全版本,本文就來介紹一下Nginx服務(wù)器配置https安全協(xié)議的實(shí)現(xiàn),感興趣的可以了解一下2024-09-09
linux下Nginx+Tomcat負(fù)載均衡配置方法
這篇文章主要介紹了linux下Nginx+Tomcat負(fù)載均衡配置方法,需要的朋友可以參考下2016-09-09
利用nginx同一端口部署多個(gè)前端的辦法(親測(cè)有效版)
在Nginx中配置同一個(gè)端口支持多個(gè)前端應(yīng)用,通??梢酝ㄟ^不同的路徑(location)來映射不同的前端項(xiàng)目,這篇文章主要介紹了利用nginx同一端口部署多個(gè)前端的相關(guān)資料,需要的朋友可以參考下2026-01-01
Ubuntu下Nginx1.28.0源碼編譯安裝與systemd管理方式解讀
這篇文章主要介紹了Ubuntu下Nginx1.28.0源碼編譯安裝與systemd管理方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2025-05-05

