上一篇博客Nginx配置詳解已經說過了nginx 的基本配置情況,今天來詳細講述一下nginx的location的配置原則, location是根據Uri來進行不同的定位,location可以把網站的不同部分,定位到不同的處理方式上, location的語法: location [=|~|~*|^~ ...
上一篇博客Nginx配置詳解已經說過了nginx 的基本配置情況,今天來詳細講述一下nginx的location的配置原則,
location是根據Uri來進行不同的定位,location可以把網站的不同部分,定位到不同的處理方式上,
location的語法:
location [=|~|~*|^~] patt { } //中括弧中為修飾符,可以不寫任何參數,此時稱為一般匹配,也可以寫參數
因此,大類型可以分為三種:
location = patt {} [精準匹配]
location patt{} [普通匹配]
location ~ patt{} [正則匹配]
先來看一張圖瞭解一下匹配的優先順序問題:
location命中過程:
1.先進性精準匹配,如果命中立即返回結果並結束解析的過程;
2.精準匹配未命中判斷普通匹配,如果命中多個會記錄下"最長的"命中結果,但不會結束解析;
3.繼續判斷正則匹配,按照正則匹配設置的規則正則表達式進行匹配,如果有多個正則匹配由上到下進行匹配,一旦匹配成功一個會立即返回結果並結束解析.
ps:普通匹配的前後順序是無所謂的,因為記錄的是最長的結果,而正則匹配是有所謂的,因為是按從上到下匹配的,這個需要註意!!!
server { listen 80; server_name localhost; location =/text.html { #精準匹配,瀏覽器輸入IP地址/text.html,定位到伺服器/var/www/html/text.html文件
root /var/www/html;
index text.html;
} location / { #普通匹配,瀏覽器輸入IP地址,定位到伺服器/usr/local/nginx/html/default.html文件
root html;
index default.html;
}
location ~ image { #正則匹配,瀏覽器輸入IP/image..地址會被命中,定位到/var/www/image/index.html
root /var/www/image;
index index.html;
}
}