当前位置:
首页
文章
服务器
详情

nginx location匹配规则

语法:

location [=|~|~*|^~] /uri/ { 
  # ... 
}

规则:

  • / 开头表示通用匹配(任何请求都会匹配到)
  • = 开头表示精确匹配
  • ^~ 开头表示uri以某个常规字符串开头(如url路径)
  • ~ 开头表示区分大小写
  • ~* 开头表示不区分大小写
  • !~ 开头表示区分大小写不匹配
  • !~* 开头表示不区分大小写不匹配

优先级:

首先精确匹配 = -> 其次以xx开头匹配 ^~ -> 然后是按文件中顺序的正则匹配 -> 最后是交给 / 通用匹配

当有匹配成功时候,停止匹配,按当前匹配规则处理请求。

示例:

location = / {
   #规则1
}
location = /user {
   #规则2
}
location ^~ /static/ {
   #规则3
}
location ~ \.(gif|jpg|png|js|css)$ {
   #规则4,注意:是根据括号内的大小写进行匹配。括号内全是小写,只匹配小写
}
location ~* \.png$ {
   #规则5
}
location !~ \.html$ {
   #规则6
}
location !~* \.html$ {
   #规则7
}
location / {
   #规则8
}

使用场景

某某接口跳过一些配置,如:add_header,单独拿出来做精确匹配

location = /api/xxx/add {
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_http_version 1.1;
    proxy_pass http://127.0.0.1:3000;
}

location / {
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_http_version 1.1;
    proxy_pass http://127.0.0.1:3000;
    if ($http_origin ~ xxx\.cn$) {
        add_header Access-Control-Allow-Origin $http_origin;
    }
}

免责申明:本站发布的内容(图片、视频和文字)以转载和分享为主,文章观点不代表本站立场,如涉及侵权请联系站长邮箱:xbc-online@qq.com进行反馈,一经查实,将立刻删除涉嫌侵权内容。

同类热门文章