nginx

nginx location匹配顺序

2019-08-13  本文已影响0人  微凉哇

例子来源以下地址

https://github.com/trimstray/nginx-admins-handbook#introduction

假设配置如下

server {

 listen           80;
 server_name      xyz.com www.xyz.com;

 location ~ ^/(media|static)/ {
  root            /var/www/xyz.com/static;
  expires         10d;
 }

 location ~* ^/(media2|static2) {
  root            /var/www/xyz.com/static2;
  expires         20d;
 }

 location /static3 {
  root            /var/www/xyz.com/static3;
 }

 location ^~ /static4 {
  root            /var/www/xyz.com/static4;
 }

 location = /api {
  proxy_pass      http://127.0.0.1:8080;
 }

 location / {
  proxy_pass      http://127.0.0.1:8080;
 }

 location /backend {
  proxy_pass      http://127.0.0.1:8080;
 }

 location ~ logo.xcf$ {
  root            /var/www/logo;
  expires         48h;
 }

 location ~* .(png|ico|gif|xcf)$ {
  root            /var/www/img;
  expires         24h;
 }

 location ~ logo.ico$ {
  root            /var/www/logo;
  expires         96h;
 }

 location ~ logo.jpg$ {
  root            /var/www/logo;
  expires         48h;
 }

}

匹配规则如下

请求URL 相匹配的location 最终匹配
/ 1) prefix match for / /
/css 1) prefix match for / /
/api 1) exact match for /api /api
/api/ 1) prefix match for / /
/backend 1) prefix match for /2) prefix match for /backend /backend
/static 1) prefix match for / /
/static/header.png 1) prefix match for /2) case sensitive regex match for ^/(media|static)/ ^/(media|static)/
/static/logo.jpg 1) prefix match for /2) case sensitive regex match for ^/(media|static)/ ^/(media|static)/
/media2 1) prefix match for /2) case insensitive regex match for ^/(media2|static2) ^/(media2|static2)
/media2/ 1) prefix match for /2) case insensitive regex match for ^/(media2|static2) ^/(media2|static2)
/static2/logo.jpg 1) prefix match for /2) case insensitive regex match for ^/(media2|static2) ^/(media2|static2)
/static2/logo.png 1) prefix match for /2) case insensitive regex match for ^/(media2|static2) ^/(media2|static2)
/static3/logo.jpg 1) prefix match for /static32) prefix match for /3) case sensitive regex match for logo.jpg$ logo.jpg$
/static3/logo.png 1) prefix match for /static32) prefix match for /3) case insensitive regex match for .(png|ico|gif|xcf)$ .(png|ico|gif|xcf)$
/static4/logo.jpg 1) priority prefix match for /static42) prefix match for / /static4
/static4/logo.png 1) priority prefix match for /static42) prefix match for / /static4
/static5/logo.jpg 1) prefix match for /2) case sensitive regex match for logo.jpg$ logo.jpg$
/static5/logo.png 1) prefix match for /2) case insensitive regex match for .(png|ico|gif|xcf)$ .(png|ico|gif|xcf)$
/static5/logo.xcf 1) prefix match for /2) case sensitive regex match for logo.xcf$ logo.xcf$
/static5/logo.ico 1) prefix match for /2) case insensitive regex match for .(png|ico|gif|xcf)$ .(png|ico|gif|xcf)$

匹配顺序说明

nginx根据uri进行最优匹配

上一篇 下一篇

猜你喜欢

热点阅读