Fork me on GitHub

Nginx 配置 Location 规则优先级问题

nginx 的 location与配置中 location 顺序没有关系,与 location 表达式的类型有关。相同类型的表达式,字符串长的会优先匹配。

以下是按优先级排列说明:

  • 等号类型(=)的优先级最高。一旦匹配成功,则不再查找其他匹配项。
  • ^~类型表达式。一旦匹配成功,则不再查找其他匹配项。
  • 正则表达式类型(~ ~*)的优先级次之。如果有多个location的正则能匹配的话,则使用正则表达式最长的那个。
  • 常规字符串匹配类型。按前缀匹配。
复制代码
location ^~ /static/ { 
# 匹配任何以 /static/ 开头的地址,一旦匹配成功,则不再查找其他匹配项。
   root /opt/web/;
}

location /static/ {
  # 匹配任何以 /static/ 开头的地址,匹配符合以后,还要继续往下搜索
}
复制代码
我的环境是有一个 spring boot 的项目,默认使用jar包运行,静态资源由 spring 配置的路由管理,现在只要加一个静态服务器(服务器需要存在 static 目录,或者 配置两个 server 使用不同的域名)
复制代码
server {
        listen 80;
        server_name web.xxx.com;
        location ^~ /static/ {
            root /opt/web/;
        }
        location / {
            proxy_pass http://127.0.0.1:5000;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Host $host:80;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Via "nginx";
        }
}
#静态页面
location ~ .*\.(html|htm|gif|jpg|jpeg|bmp|png|ico|txt|js|css)$ { 
        root /opt/web/;
        expires 1d; 
}
复制代码

REFER:
https://www.cnblogs.com/linjiqin/p/5532119.html

http://blog.csdn.net/xy2204/article/details/47749405
posted @   花儿笑弯了腰  阅读(762)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述
点击右上角即可分享
微信分享提示