Nginx路由匹配規(guī)則的一些理解

使用過nginx的同學都知道,在nginx配置文件中通過location配置路由轉發(fā)規(guī)則,配置語法為:

location   [=|~|~*|^~]    /uri/   { 
          ...
}

中括號中為路由匹配符號,常見的有:

1  =:精確匹配
2  ^~:精確前綴匹配
3  ~:區(qū)分大小寫的正則匹配
4  ~*:不區(qū)分大小寫的正則匹配
5  /uri:普通前綴匹配
6  /:通用匹配

精確匹配

精確匹配使用 表示,nginx進行路由匹配的時候,精確匹配具有最高的優(yōu)先級,請求一旦精確匹配成功nginx會停止搜索其他到匹配項

配置實例

location = /test {
        ...
}

精確前綴匹配

精確前綴匹配的優(yōu)先級僅次于精確匹配,nginx對一個請求精確前綴匹配成功后,停止繼續(xù)搜索其他到匹配項

配置實例

location ^~ /test_a {
        ...
}

正則匹配

正則匹配分為區(qū)分大小寫和不區(qū)分大小寫兩種,分別用 ~~* 表示;一個請求精確匹配和精確前綴匹配都失敗后,如果配置有相關的正則匹配location,nginx會嘗試對該請求進行正則匹配。需要說明的是正則匹配之間沒有優(yōu)先級一說,而是按照在配置文件中出現的順序進行匹配,一旦匹配上一個,就會停止向下繼續(xù)搜索

配置實例

# 配置1
location ~ /test_a {
        ...
}

# 配置2  
location ~* /test_A {
        ...
}

對于請求 /test_a/hello 來說會被匹配到 配置1 處理,/test_A/hello 則會被匹配給 配置2 處理

普通前綴匹配

普通前綴匹配前面沒有任何修飾符,直接在location后寫需要匹配的uri,它的優(yōu)先級次于正則匹配

配置實例

location /img {
        ...
}

通用匹配

通用匹配使用一個 / 表示,可以匹配所有請求,一般nginx配置文件最后都會有一個通用匹配規(guī)則,當其他匹配規(guī)則均失效時,請求會被路由給通用匹配規(guī)則處理;如果沒有配置通用匹配,并且其他所有匹配規(guī)則均失效時,nginx會返回 404 錯誤

配置實例

location / {
        ...
}

引用一個完整例子

nginx路由規(guī)則配置:

location = / {
   echo "規(guī)則A";
}
location = /login {
   echo "規(guī)則B";
}
location ^~ /static/ {
   echo "規(guī)則C";
}
location ^~ /static/files {
    echo "規(guī)則X";
}
location ~ \.(gif|jpg|png|js|css)$ {
   echo "規(guī)則D";
}
location ~* \.png$ {
   echo "規(guī)則E";
}
location /img {
    echo "規(guī)則Y";
}
location / {
   echo "規(guī)則F";
}
請求uri 匹配路由規(guī)則
http://localhost/ 規(guī)則A
http://localhost/login 規(guī)則B
http://localhost/register 規(guī)則F
http://localhost/static/a.html 規(guī)則C
http://localhost/static/files/a.txt 規(guī)則X
http://localhost/a.png 規(guī)則D
http://localhost/a.PNG 規(guī)則E
http://localhost/img/a.gif 規(guī)則D
http://localhost/img/a.tiff 規(guī)則Y

以上是對nginx路由匹配規(guī)則的粗略總結和歸納,如有不足之處歡迎指正,共同探討!

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現,斷路器,智...
    卡卡羅2017閱讀 136,715評論 19 139
  • 上一篇《WEB請求處理一:瀏覽器請求發(fā)起處理》,我們講述了瀏覽器端請求發(fā)起過程,通過DNS域名解析服務器IP,并建...
    七寸知架構閱讀 81,810評論 21 356
  • Nginx簡介 解決基于進程模型產生的C10K問題,請求時即使無狀態(tài)連接如web服務都無法達到并發(fā)響應量級一萬的現...
    魏鎮(zhèn)坪閱讀 2,231評論 0 9
  • 1.ngnix介紹 ngnix www服務軟件 俄羅斯人開發(fā) 開源 性能很高 本身是一款靜態(tài)WWW軟件 靜態(tài)小文件...
    逗比punk閱讀 2,257評論 1 6
  • 沒有計劃的進步就是“演化”。創(chuàng)業(yè)就像生物演化,大家嘗試各種可能性,最終被證明可行的,為數不多。對于個人來說,我們承...
    用生命詮釋高效閱讀 595評論 0 1

友情鏈接更多精彩內容