请问nginx两条规则冲突了怎么办?

规则1
    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
    {
        expires      30d;
        error_log off;
        access_log /dev/null;
    }
规则2
    location /api { 
      rewrite  ^/api(.*)$ /$1 break;
      proxy_pass http://localhost:999;
    }

当我访问 http://xxx:80/api/uploads/a.jpg 无法访问 404

当我去掉 规则1(gif|jpg|jpeg|png|bmp|swf) 改成 (gif|jpeg|png|bmp|swf) 是可以访问代理的图片

所以说明是规则冲突的原因

请问我该如何把这两条规则合并呢?

阅读 3.6k
1 个回答

/api 路径前面加上 ^~ ,意思是匹配到 /api 了就停止往下匹配了

location ^~ /api { ... }
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题