Nginx 路徑符號匹配規則,萬用字元
阿新 • • 發佈:2018-12-24
1,Nginx路徑符號匹配介紹:
- = 表示精確匹配
- ^~ 表示uri以某個常規字串開頭,大多情況下用來匹配url路徑,nginx不對url做編碼,因此請求為/static/20%/aa,可以被規則^~ /static/ /aa匹配到(注意是空格)。
- ~ 正則匹配(區分大小寫)
- ~* 正則匹配(不區分大小寫)
- !~ 和 !~*分別為區分大小寫不匹配及不區分大小寫不匹配 的正則
- / 任何請求都會匹配
2,符號的優先順序
首先匹配 =,其次匹配^~, 其次是按檔案中順序的正則匹配,最後是交給 / 通用匹配。當有匹配成功時候,停止匹配,按當前匹配規則處理請求。
例子,有如下匹配規則:
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 }
訪問根目錄/, 比如http://localhost/ 將匹配規則A
訪問 http://localhost/login 將匹配規則B,http://localhost/register 則匹配規則H
訪問 http://localhost/static/a.html 將匹配規則C
訪問 http://localhost/a.gif, http://localhost/b.jpg 將匹配規則D,規則E不起作用,而 http://localhost/static/c.png 則優先匹配到規則C
訪問 http://localhost/a.PNG 則匹配規則E,而不會匹配規則D,因為規則E不區分大小寫。
訪問 http://localhost/category/id/1111 則最終匹配到規則H,因為以上規則都不匹配,這個時候應該是nginx轉發請求給後端應用伺服器,比如FastCGI(php),tomcat(jsp),nginx作為方向代理伺服器存在。
3,簡單通用配置
靜態動態分離,除了靜態資源以外的請求都交給Tomcat處理.
location / {
proxy_pass http://localhost:8080
}
location ^~ /static/ {
root /webroot/static/;
}
location ~* \.(html|htm|gif|jpg|jpeg|bmp|png|ico|txt|js|css)$ {
root /webroot/res/;
}