最近在配置nginx时,需要对某些路径来做处理,我们最常使用的如 location /web {} ,其中 web 为访问的路径,小编是需要包含 http://www.kw360.net/web/jisuan,http://www.kw360.net/api/,http://www.kw360.net/print/esc 等这样的,通过搜索后以 location ~ /web|print|api/ {} 配置成功。

location匹配顺序

多个正则location直接按书写顺序匹配,成功后就不会继续往后面匹配

普通(非正则)location会一直往下,直到找到匹配度最高的(最大前缀匹配)

当普通location与正则location同时存在,如果正则匹配成功,则不会再执行普通匹配

所有类型location存在时,“=”匹配 > “^~”匹配 > 正则匹配 > 普通(最大前缀匹配)

location 的匹配规则及实例说明

空格:默认匹配,普通匹配
location / {
     root /home;
}

=:精确匹配
location = /imooc/img/face1.png {
    root /home;
}

~*:匹配正则表达式,不区分大小写
#符合图片的显示
location ~* .(GIF|jpg|png|jpeg) {
    root /home;
}

~:匹配正则表达式,区分大小写
#GIF必须大写才能匹配到
location ~ .(GIF|jpg|png|jpeg) {
    root /home;
}

^~:以某个字符路径开头
location ^~ /imooc/img {
    root /home;
}

location ~* \.(jpg|png|gif|jpeg)$ {
  # 匹配所有以 jpg,png,gif,jpeg 结尾的请求
}

location ~ /web|print|api/ {
  # 匹配所有以 web,print,api开头的请求
}

location  / {
  # 因为所有的地址都以 / 开头,所以这条规则将匹配到所有请求
}

location  = / {
  # 精确匹配 / ,主机名后面不能带任何字符串
}