文章詳情頁(yè)
nginx?location指令(匹配順序匹配沖突)實(shí)戰(zhàn)示例詳解
瀏覽:5日期:2023-08-03 20:13:38
目錄1. 對(duì)url的匹配1.1 默認(rèn)匹配1.2 精確匹配( = )1.3 正則,區(qū)分大小寫(xiě) ( ~ )1.4 正則表達(dá)式,不區(qū)分大小寫(xiě) ( ~* )2. 匹配順序2.1 示例(精確匹配最高)2.2 示例(字串匹配次之)2.3 示例(正則匹間配高于通用匹配)2.4 示例(正則表達(dá)式間前邊的為準(zhǔn))2.5 示例(通用匹配兜底)3. 匹配間的沖突3.1 通用匹配 VS 字串匹配1. 對(duì)url的匹配1.1 默認(rèn)匹配語(yǔ)法示例 location /crow/ { return 501 '通用匹配\n'; }1.2 精確匹配( = )語(yǔ)法示例 location = /crow/ { return 501 '精確匹配\n'; }1.3 正則,區(qū)分大小寫(xiě) ( ~ )語(yǔ)法示例 location ~ /crow/.*\.md { return 501 '正則表達(dá)式,區(qū)分大小寫(xiě)\n'; }1.4 正則表達(dá)式,不區(qū)分大小寫(xiě) ( ~* )語(yǔ)法示例 location ~* /crow/.*\.md { return 501 '正則表達(dá)式,不區(qū)分大小寫(xiě)\n'; }2. 匹配順序精確匹配(=)字串匹配(^~)正則匹配(~、~*)默認(rèn)匹配()2.1 示例(精確匹配最高)配置文件內(nèi)容:server { listen 1840; root /usr/share/nginx/html; location / {index index.html index.php index.htm; } location /crow/ { return 501 '通用匹配\n'; } location = /crow/test.md { return 501 '精確匹配\n'; } location ~ /crow/.*\.md { return 501 '正則表達(dá)式,區(qū)分大小寫(xiě)\n'; } location ~* /crow/.*\.md { return 501 '正則表達(dá)式,不區(qū)分大小寫(xiě)\n'; } location ^~ /crow/test.md { return 501 '字串匹配\n'; }}訪問(wèn)測(cè)試[root@liubei nginx-crow-test]# curl http://localhost:1840/crow/test.md精確匹配
可見(jiàn)精確匹配被匹配到。
下邊我們?nèi)サ艟_匹配:
2.2 示例(字串匹配次之)配置文件內(nèi)容:server { listen 1840; root /usr/share/nginx/html; location / {index index.html index.php index.htm; } location /crow/ { return 501 '通用匹配\n'; } #location = /crow/test.md { # return 501 '精確匹配\n'; #} location ~ /crow/.*\.md { return 501 '正則表達(dá)式,區(qū)分大小寫(xiě)\n'; } location ~* /crow/.*\.md { return 501 '正則表達(dá)式,不區(qū)分大小寫(xiě)\n'; } location ^~ /crow/test.md { return 501 '字串匹配\n'; }}訪問(wèn)測(cè)試如下可見(jiàn),還剩 字串匹配、正則匹配、通用匹配,結(jié)果匹配到了 字串匹配。
[root@liubei nginx-crow-test]# curl http://localhost:1840/crow/test.md字串匹配2.3 示例(正則匹間配高于通用匹配)配置文件server { listen 1840; root /usr/share/nginx/html; location / {index index.html index.php index.htm; } location /crow/ { return 501 '通用匹配\n'; } #location = /crow/test.md { # return 501 '精確匹配\n'; #} location ~ /crow/.*\.md { return 501 '正則表達(dá)式,區(qū)分大小寫(xiě)\n'; } location ~* /crow/.*\.md { return 501 '正則表達(dá)式,不區(qū)分大小寫(xiě)\n'; } #location ^~ /crow/test.md { # return 501 '字串匹配\n'; #}}訪問(wèn)測(cè)試[root@liubei nginx-crow-test]# curl http://localhost:1840/crow/test.md正則表達(dá)式,區(qū)分大小寫(xiě)2.4 示例(正則表達(dá)式間前邊的為準(zhǔn))上例中我們看到:~在前邊,因此先匹配了 ~。如果我們把~和~*換個(gè)位置
配置文件server { listen 1840; root /usr/share/nginx/html; location / {index index.html index.php index.htm; } location /crow/ { return 501 '通用匹配\n'; } location ~* /crow/.*\.md { return 501 '正則表達(dá)式,不區(qū)分大小寫(xiě)\n'; } location ~ /crow/.*\.md { return 501 '正則表達(dá)式,區(qū)分大小寫(xiě)\n'; }}訪問(wèn)測(cè)試[root@liubei nginx-crow-test]# curl http://localhost:1840/crow/test.md正則表達(dá)式,不區(qū)分大小寫(xiě)2.5 示例(通用匹配兜底)配置文件
我們還是將所有匹配都寫(xiě)上
server { listen 1840; root /usr/share/nginx/html; location / {index index.html index.php index.htm; } location /crow/ { return 501 '通用匹配\n'; } location = /crow/test.md { return 501 '精確匹配\n'; } location ~ /crow/.*\.md { return 501 '正則表達(dá)式,區(qū)分大小寫(xiě)\n'; } location ~* /crow/.*\.md { return 501 '正則表達(dá)式,不區(qū)分大小寫(xiě)\n'; } location ^~ /crow/test.md { return 501 '字串匹配\n'; }}訪問(wèn)測(cè)試[root@liubei nginx-crow-test]# curl http://localhost:1840/crow/test.txt通用匹配3. 匹配間的沖突3.1 通用匹配 VS 字串匹配通用匹配和字串匹配相同時(shí),啟動(dòng)報(bào)錯(cuò)
配置文件 location /crow/test.md { return 501 '通用匹配\n'; } location ^~ /crow/test.md { return 501 '字串匹配\n'; }啟動(dòng)報(bào)錯(cuò)如下:nginx-crow-test | nginx: [emerg] duplicate location '/crow/test.md' in /etc/nginx/conf.d/default.conf:45以上就是nginx location指令(實(shí)戰(zhàn)示例匹配順序匹配沖突)使用詳解的詳細(xì)內(nèi)容,更多關(guān)于nginx location指令的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!
標(biāo)簽:
Nginx
排行榜
