首页 热点专区 小学知识 中学知识 出国留学 考研考公
您的当前位置:首页正文

Nginx 的 location 匹配规则

2024-12-20 来源:要发发知识网

1.location 配置有什么用?

location 配置用于匹配指定 URI,然后对匹配的请求进行相关处理。

2.语法规则

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

符号 含义
= 表示精确匹配
^~ 表示 URI 以某个常规字符串开头。Nginx 不对 URL 做编码,因此请求为 /static/20%/aa,可以被 ^~ /static/ /aa 匹配到
~ 表示区分大小写的正则匹配
~* 表示不区分大小写的正则匹配
/ 通用匹配,任何请求都会匹配

多个 location 配置的情况下匹配顺序为(参考资料而来,还未实际验证):

  • 首先匹配 =
  • 其次匹配 ^~
  • 其次是按文件中顺序的正则匹配
  • 最后是交给 /
  • 当有匹配成功时候,停止匹配,按当前匹配规则处理请求

例子,有如下匹配规则:

location = / {
    #规则A
}

location = /login {
    #规则B
}

location ^~ /static/ {
    #规则C
}

location ~ \.(gif|jpg|png|js|css)$ {
    #规则D
}

location ~* \.png$ {
    #规则E
}

location / {
    #规则F
}

那么产生的效果如下:

  • 访问根目录 /, 比如 将匹配规则 A
  • 访问 将匹配规则 B, 则匹配规则 F
  • 访问 将匹配规则 C
  • 访问 , 将匹配规则 D 和规则 E,但是规则 D 顺序优先,规则 E 不起作用,而 则优先匹配到规则 C
  • 访问 则匹配规则 E,而不会匹配规则 D,因为规则 E 不区分大小写。
  • 访问 则最终匹配到规则 F,因为以上规则都不匹配,这个时候应该是 nginx 转发请求给后端应用服务器,比如 FastCGI(php),tomcat(jsp),nginx 作为反向代理服务器存在。
显示全文