国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網(wǎng)站 > Nginx > 正文

Nginx配置指令location匹配符優(yōu)先級和安全問題

2024-08-30 12:22:31
字體:
供稿:網(wǎng)友
使用nginx 很久了,它的性能高,穩(wěn)定性表現(xiàn)也很好,得到了很多人的認(rèn)可。特別是它的配置,有點像寫程序一樣,每行命令結(jié)尾一個";"號,語句塊用"{}"括起來。 配制好,直接nginx -t 檢查配制情況,配制成功,直接運行:service nginx reload .服務(wù)器沒有任何宕機情況下,實現(xiàn)平穩(wěn)修改配置

最近一直在做location 配置,遇到優(yōu)先級別問題(如果配置不當(dāng)可能存在安全隱患哦),以下是個人學(xué)習(xí)一點體會。

一、 location 的匹配符
1.等于匹配符:=
等于匹配符就是等號,特點可以概括為兩點:
精確匹配
不支持正則表達(dá)式
2.空匹配符
空匹配符的特點是:
匹配以指定模式開始的 URI
不支持正則表達(dá)式
3.正則匹配符:~
正則匹配符是可以使用正則表達(dá)式的匹配符。不過這里要強調(diào)的是,一般來說~是指:
區(qū)分大小寫的正則匹配
而~*表示:
不區(qū)分大小寫的正則匹配
但是對于一些對大小寫不敏感的操作系統(tǒng),這兩者沒有區(qū)別。另外一個就是^~,其表示以指定模式開始的正則匹配。

4.內(nèi)部訪問符:@
一般用于錯誤頁面等,這個暫不討論。

二、匹配符優(yōu)先級
1.=
2.空匹配符,滿足精確匹配時
3.^~
4.~或~*
5.空匹配符,滿足以指定模式開始時的匹配時
這樣說比較抽象,我們來看例子吧。

2.1 等于匹配符與精確匹配時的空匹配符

看下面的例子(用到我們此前一起完成的Hello World模塊):
復(fù)制代碼 代碼如下:
location /poechant {
    hello_world no1;
}

location = /poechant {
    hello_world no2;
}
如果我們的請求是http://my.domian/poechant,則我們發(fā)現(xiàn)兩個location都與請求的 URI 匹配,這時根據(jù)我們的優(yōu)先級順序,第一個是精確匹配時的空匹配符,第二個是等于匹配符,所以第二個的優(yōu)先級高,也就是應(yīng)該輸出:

hello_world, no2
同時也說明 Nginx 的 locatoin 不是按照配置文件中的書寫順序來匹配的。

2.2 精確匹配時的空匹配符與正則匹配的^~

下面這個例子中,兩者開始都精確匹配了,連這個正則匹配都是精確匹配。
復(fù)制代碼 代碼如下:
location ^~ ^/poechant$ {
    hello_world no1;
}

location /poechant {
    hello_world no2;
}
匹配哪一個?你測試一下,會得到:

hello_world, no2
與我們上面說的優(yōu)先級順序相吻合。
2.3 其他匹配優(yōu)先級比較的實例


三、實戰(zhàn)經(jīng)驗總結(jié)

1.location 匹配的優(yōu)先級(來自實踐總結(jié)中)
(location =) > (location 完整路徑 >) >(location ^~ 路徑) >(location ~* 正則) >(location 路徑)
只要匹配到,其它的都會忽略,然后返回到改匹配。
用以下例子來測試:

復(fù)制代碼 代碼如下:
#1   
location / {
   return 500;
}
#2
location /a/ {
    return 404;
}
#3
location ~* /.jpg$ {
    return 403;
}
#4
location ^~ /a/ {
    return 402;
}
#5
location  /a/1.jpg {
    return 401;
}
#6
location = /a/1.jpg {
    return 400;
}

說明:測試的時候,先要將#2全部注釋掉,不然會認(rèn)為#2 與#4 完全一樣。會提示:重復(fù)配置,提示如下
復(fù)制代碼

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 嘉定区| 郁南县| 江达县| 林甸县| 遂昌县| 江源县| 弋阳县| 邢台市| 汶川县| 保定市| 临颍县| 安宁市| 察哈| 公主岭市| 万源市| 礼泉县| 洛南县| 洞头县| 泰宁县| 邳州市| 龙南县| 长海县| 玉门市| 茌平县| 永清县| 平利县| 吉木乃县| 邢台县| 嫩江县| 安达市| 库伦旗| 竹山县| 项城市| 色达县| 和田市| 石首市| 大英县| 嘉义市| 肃南| 阜城县| 房产|