日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

nginx——location 优先级

發(fā)布時間:2024/10/12 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 nginx——location 优先级 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、 location 的匹配符
1.等于匹配符:=
等于匹配符就是等號,特點可以概括為兩點:
精確匹配
不支持正則表達式
2.空匹配符
空匹配符的特點是:
匹配以指定模式開始的 URI
不支持正則表達式
3.正則匹配符:~
正則匹配符是可以使用正則表達式的匹配符。不過這里要強調(diào)的是,

一般來說~是指:區(qū)分大小寫的正則匹配
而~*表示:???????? 不區(qū)分大小寫的正則匹配
但是對于一些對大小寫不敏感的操作系統(tǒng),這兩者沒有區(qū)別。?

^~表示只匹配字符串,不查詢正則表達式

二、優(yōu)先級的實例

location ~ ^/poechant$ {return 400; }location =/poechant {return 403; }

結(jié)果顯示 403 forbdden

location ~ ^/poechant$ {return 400; }location /poechant {return 403; }

結(jié)果顯示 400 Bad Request

根據(jù)以上可以大體判斷了解? location的優(yōu)先級別以及流程。

還需要驗證是不是事實

1、首先精確匹配 也就是帶著 =的location? 找到之后直接結(jié)束解析過程并返回。

2、其次匹配普通匹配,并記錄最長的匹配,此時首先不返回。匹配最長的。

3、再匹配正則表達式,以~開始的,正則表達式,按照順序從上到下匹配,找到匹配之后立即返回,沒有匹配到則返回普通匹配的最長的匹配。如果普通匹配沒有匹配到頁面,則返回 404 not found。

優(yōu)先級別??? 精準匹配 = >正則匹配 >普通匹配(比如 /a?? /a/1.jpg 等 包括 ^~表示之匹配字符串不查詢正則表達式)

?

#1 location / {return 404; }#2 #location /a/ { # return 404; #}#3 location ~* \.jpg$ {return 403; }#4 location ~ ^/a/ {return 404; }#5 location ^~ /a/ {return 402; }#6 location /a/1.jpg {return 401; }#7 location = /a/1.jpg {return 400; }

?

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

[emerg]: duplicate location "/a/" in D:\nginx-0.8.7/conf/nginx.conf:53

每一次都訪問 localhost:8080/a/1.jpg

第一次訪問? 說明匹配 #7 精準匹配

?

?

把7注釋掉? 然后訪問 ??? 說明 3正則匹配匹配成功

接下來互換3跟4

#4 location ~ ^/a/ {return 404; }#3 location ~* \.jpg$ {return 403; }

再一次訪問?? 說明正則表達式 是按照從上往下的順序匹配的? 匹配成功就停止? 同時也驗證了 匹配的順序是 首先 匹配普通匹配? 并記錄最長的匹配?? 然后匹配正則表達式 ,找到之后

停止匹配。

把 3、4注釋掉?? 訪問? 匹配 6成功? 普通匹配匹配最長的

注釋掉 6之后? 匹配5成功?? ^~ 以指定的 模式開始的?

?

轉(zhuǎn)載于:https://www.cnblogs.com/timelesszhuang/p/4628951.html

總結(jié)

以上是生活随笔為你收集整理的nginx——location 优先级的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。