Nginx的location匹配規則:nginx
語法規則: location [=|~|~*|^~] /uri/ { … }tomcat
= 普通字符精確匹配,這個優先級也是最高的bash
~ 波浪線表示執行一個正則匹配,區分大小寫curl
~* 表示執行一個正則匹配,不區分大小寫ide
^~ 表示普通字符匹配,若是該選項匹配,只匹配該選項,不匹配別的選項,通常用來匹配目錄測試
!~ 表示區分大小寫不匹配的正則url
!~* 表示不區分大小寫不匹配的正則spa
/ 通用匹配,任何請求都會匹配到,默認匹配server
location匹配的優先級:
get
= 精確匹配優先級最大,若是發現精確匹配,nginx會中止搜索其餘匹配
^~ 其次匹配
其次是按文件中順序的正則匹配,最後是交給 / 通用匹配。當有匹配成功時候,中止匹配,按當前匹配規則處理請求。
例如:
Nginx配置文件:(省略了前面的常規配置)
server { listen 80; server_name 127.0.0.1; #默認匹配 location / { echo "/"; } #精確匹配 location =/ { echo "=/"; } #精確匹配 location =/nginx { echo "=/nginx"; } #以gif結尾的區分大小寫 location ~ \.gif$ { echo "gif"; } #以gif結尾的不區分大小寫 location ~* \.gif$ { echo "GIF"; } #匹配/static/路徑 location ^~ /static/ { echo "static"; } access_log logs/tomcat1_access.log; }
測試:
# curl 192.168.78.131 =/ # curl 192.168.78.131/nginx =/nginx # curl 192.168.78.131/123.gif gif # curl 192.168.78.131/123.GIF GIF # curl 192.168.78.131/static/123.gif static
更多內容,請關注博主我的博客地址:http://www.whysha.com