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