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

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

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

一、環(huán)境

Nginx 1.19

二、匹配模式

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

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

1. 精準(zhǔn)模式

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. 正則模式(大小寫(xiě)敏感)

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

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

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

Nginx會(huì)按照 精準(zhǔn)模式 -> 前綴模式 -> 正則模式 的順序來(lái)匹配。

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

三、需要注意的地方

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

看例子:

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

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

如果訪問(wèn)http://localhost/a/b,會(huì)命中哪個(gè)location?答案是第一個(gè)。

因?yàn)閮蓚€(gè)location都是正則模式(無(wú)論是否大小寫(xiě)敏感),從上之下,哪個(gè)先匹配到就哪個(gè)負(fù)責(zé)處理。

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

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

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

簡(jiǎn)單來(lái)說(shuō),哪個(gè)location匹配到的字符串最長(zhǎng),就由哪個(gè)來(lái)處理,比如http://localhost/a/b/c能匹配到的最長(zhǎng)字符串是/a/b,所以由第二個(gè)location來(lái)處理。

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

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

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

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

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

訪問(wèn)http://localhost/a/b,會(huì)命中第三個(gè)location

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

4. 兩種前綴模式不能同時(shí)存在

看例子:

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

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

上面這段配置 Nginx 會(huì)報(bào)錯(cuò),因?yàn)?strong>在路徑相同的情況下,這兩種模式不能共存。

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論

内丘县| 上蔡县| 柳州市| 金昌市| 金川县| 镇坪县| 都昌县| 普洱| 苍溪县| 东安县| 高淳县| 曲松县| 石狮市| 九龙坡区| 临澧县| 合阳县| 静安区| 桦南县| 敦煌市| 广河县| 聂荣县| 凤凰县| 乐清市| 丰城市| 调兵山市| 本溪市| 广饶县| 桓台县| 内乡县| 凤山市| 普定县| 白玉县| 敦煌市| 稻城县| 神木县| 无为县| 响水县| 泰安市| 荃湾区| 揭阳市| 长白|