1、Nginx路徑匹配符號
= 表示精確匹配
^~ 表示uri以某個常規字符串開頭,大多情況下用來匹配url路徑,nginx不對url做編碼,因此請求為/static/20%/aa,可以被規則^~ /static/ /aa匹配到(注意是空格)。
~ 正則匹配(區分大小寫)
~* 正則匹配(不區分大小寫)
!~和!~*分別為區分大小寫不匹配及不區分大小寫不匹配 的正則
/ 任何請求都會匹配
2、符號的優先級
首先匹配 =,其次匹配^~, 其次是按文件中順序的正則匹配,最后是交給 / 通用匹配。當有匹配成功時候,停止匹配,按當前匹配規則處理請求。
3、例子,有如下匹配規則:
location = / {
#規則A
}
location = /login {
#規則B
}
location ^~ /static/ {
#規則C
}
location ~ \.(gif|jpg|png|js|css)$ {
#規則D
}
location ~* \.png$ {
#規則E
}
location !~ \.xhtml$ {
#規則F
}
location !~* \.xhtml$ {
#規則G
}
location / {
#規則H
}
4、Rewirte配置
rewrite指令的最后一項參數為flag標記,flag標記有一下四種,說明一下:
1> last-標記在本條rewrite規則執行完畢后,會對其所在server{......}標簽重新發起請求。使用last實現URI重寫后,瀏覽器地址欄不變。使用alias指令必須用last標記。
2> break-標記在本條規則匹配完成后,終止匹配,不再匹配后面的規則。使用break實現URI重寫后,瀏覽器地址欄不變。使用proxy_pass指令時,需要使用break標記。
3> redirect-返回302臨時重定向,瀏覽器地址會顯示跳轉后的URL地址。
4> permanent-返回301永久重定向,瀏覽器地址會顯示跳轉后的URL地址。