nginx路由匹配
模式 含義
location = /uri = 表示精確匹配只有完全相等才會(huì)匹配成功
location ^~ /uri ^~ 表示對(duì)路由進(jìn)行前綴匹配
location ~ /uri ~ 表示對(duì)路由進(jìn)行正則匹配
location ~* /uri ~* 表示對(duì)路由進(jìn)行不區(qū)分大小寫(xiě)的正則匹配
location /uri 不帶任何修飾符也表示前綴匹配
location / 默認(rèn)匹配,任何沒(méi)有匹配到的uri
訪問(wèn)根目錄 /,比如?http://localhost/?將匹配 規(guī)則A 訪問(wèn)?http://localhost/login?將匹配 規(guī)則B,http://localhost/register?則匹配 規(guī)則F 訪問(wèn)?http://localhost/static/a.html?將匹配 規(guī)則C 訪問(wèn)?http://localhost/static/files/a.exe?將匹配 規(guī)則X,雖然 規(guī)則C 也能匹配到,但因?yàn)樽畲笃ヅ湓瓌t,最中選中了 規(guī)則X。你可以測(cè)試下,去掉規(guī)則 X ,則當(dāng)前 URL 會(huì)匹配上 規(guī)則C。 訪問(wèn)?http://localhost/a.gif,?http://localhost/b.jpg?將匹配 規(guī)則D 和 規(guī)則 E ,但是 規(guī)則 D 順序優(yōu)先,規(guī)則 E 不起作用,而?http://localhost/static/c.png?則優(yōu)先匹配到 規(guī)則 C 訪問(wèn)?http://localhost/a.PNG?則匹配 規(guī)則 E ,而不會(huì)匹配 規(guī)則 D ,因?yàn)?規(guī)則 E 不區(qū)分大小寫(xiě)。 訪問(wèn)?http://localhost/img/a.gif?會(huì)匹配上 規(guī)則D,雖然 規(guī)則Y 也可以匹配上,但是因?yàn)檎齽t匹配優(yōu)先,而忽略了 規(guī)則Y。 訪問(wèn)?http://localhost/img/a.tiff?會(huì)匹配上 規(guī)則Y。
多個(gè) location 配置的情況下匹配順序?yàn)?匹配到某一等級(jí)就結(jié)束,同一規(guī)則時(shí)匹配長(zhǎng)度長(zhǎng)的優(yōu)先):
首先精確匹配?=
其次前綴匹配?^~
其次是按文件中順序的正則匹配
然后匹配不帶任何修飾的前綴匹配。
最后是交給 / 通用匹配
當(dāng)有匹配成功時(shí)候,停止匹配,按當(dāng)前匹配規(guī)則處理請(qǐng)求
例子:
測(cè)試uri及nginx結(jié)果:
上一篇:細(xì)節(jié)總結(jié)
總結(jié)
- 上一篇: golang内存对齐
- 下一篇: redis为什么快