location 写错顺序,请求就落到意料之外的块里。理解四种匹配的执行次序,能少掉很多头发。

操作步骤

location = /exact   { # 1. 精确匹配,优先级最高 }
location ^~ /static { # 2. 前缀匹配,命中即停正则 }
location ~* \.php$  { # 3. 正则匹配,区分大小写用 ~ }
location /          { # 4. 普通前缀,兜底 }

要点速览

  • = 精确匹配优先级最高;^~ 是前缀匹配但一旦命中就跳过后续正则。
  • 正则 ~ 和 ~* 按配置文件里的出现顺序依次尝试,写在前面的先匹配。
  • 不带任何符号的普通前缀只作兜底,优先级最低。
记住口诀:精确 > 前缀停正则 > 正则顺序 > 普通前缀。