最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Nginx location匹配模式與規(guī)則詳解

 更新時間:2025年04月23日 15:02:50   作者:自由de單車  
這篇文章主要介紹了Nginx location匹配模式與規(guī)則,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

一、環(huán)境

Nginx 1.19

二、匹配模式

在 Nginx 的location指令里,常用的匹配模式有:

  • 精準模式(=)
  • 前綴模式,不繼續(xù)匹配正則(^~),
  • 前綴模式,繼續(xù)匹配正則,
  • 正則模式,大小寫敏感(~)
  • 正則模式,大小寫不敏感(~*)

1. 精準模式

location = /path {
    default_type text/html;
    return 200 'hello';
}

2. 前綴模式(不繼續(xù)匹配正則)

location ^~ /path {
    default_type text/html;
    return 200 'hello';
}

3. 前綴模式(繼續(xù)匹配正則)

location /path {
    default_type text/html;
    return 200 'hello';
}

4. 正則模式(大小寫敏感)

location ~ /path {
    default_type text/html;
    return 200 'hello';
}

5. 正則模式(大小寫不敏感)

location ~* /path {
    default_type text/html;
    return 200 'hello';
}

Nginx會按照 精準模式 -> 前綴模式 -> 正則模式 的順序來匹配。

精準模式優(yōu)先級最高,匹配到后就不再繼續(xù)匹配其它模式。而前綴模式匹配到后,還要視乎指令的配置情況,來決定要不要繼續(xù)匹配正則模式。

三、需要注意的地方

1. 命中多個正則模式時的優(yōu)先級

看例子:

# 正則模式(大小寫敏感)
location ~ /a {
    default_type text/html;
    return 200 '111';
}

# 正則模式(大小寫敏感)
location ~ /a/b {
    default_type text/html;
    return 200 '222';
}

如果訪問http://localhost/a/b,會命中哪個location?答案是第一個。

因為兩個location都是正則模式(無論是否大小寫敏感),從上之下,哪個先匹配到就哪個負責處理。

2. 命中多個前綴模式時的優(yōu)先級

# 前綴模式(繼續(xù)匹配正則)
location /a {
    default_type text/html;
    return 200 '111';
}

# 前綴模式(繼續(xù)匹配正則)
location /a/b {
    default_type text/html;
    return 200 '222';
}
  • 訪問http://localhost/a,命中第一個;
  • 訪問http://localhost/a/b,命中第二個;
  • 訪問http://localhost/a/b/c,命中第二個;

簡單來說,哪個location匹配到的字符串最長,就由哪個來處理,比如http://localhost/a/b/c能匹配到的最長字符串是/a/b,所以由第二個location來處理。

前綴模式(不繼續(xù)匹配正則)也是同樣的匹配規(guī)則。

3. 命中多個不同模式時的優(yōu)先級

# 前綴模式(不繼續(xù)匹配正則)
location ^~ /a {
    default_type text/html;
    return 200 '111';
}

# 前綴模式(繼續(xù)匹配正則)
location /a/b {
    default_type text/html;
    return 200 '333';
}

# 正則模式(大小寫敏感)
location ~ /a/b {
    default_type text/html;
    return 200 '222';
}

訪問http://localhost/a/b,會命中第三個location

前面兩個location都是前綴模式,由匹配字符串最長的處理(即第二個)。第二個location沒有阻止繼續(xù)匹配正則,于是又繼續(xù)匹配第三個location(正則模式),所以最后是由第三個location處理。

4. 兩種前綴模式不能同時存在

看例子:

# 前綴模式(不繼續(xù)匹配正則)
location ^~ /a {
    default_type text/html;
    return 200 '333';
}

# 前綴模式(繼續(xù)匹配正則)
location /a {
    default_type text/html;
    return 200 '444';
}

上面這段配置 Nginx 會報錯,因為在路徑相同的情況下,這兩種模式不能共存。

總結

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

最新評論

武邑县| 新建县| 墨竹工卡县| 崇义县| 鹤峰县| 大同县| 乌拉特中旗| 乐业县| 洞口县| 舟曲县| 城固县| 宁化县| 乐昌市| 吴忠市| 云龙县| 临高县| 灌阳县| 五莲县| 酒泉市| 镇平县| 廉江市| 北宁市| 五原县| 清镇市| 响水县| 阿拉善右旗| 柞水县| 象山县| 岑溪市| 南丹县| 富阳市| 茂名市| 托克逊县| 静海县| 保山市| 曲松县| 宁武县| 扎囊县| 保亭| 云南省| 和田县|