当前位置: 首页 > news >正文

ngix 常用配置之 location 匹配规则

大家好,我是 17。

今天和大家详细聊聊 nginx 的 location 匹配规则

location 匹配规则

@ 匹配规则在后面的 try_files 中有举例

location 按如下优先级匹配

  1. = 绝对匹配,一个字符也不能差
  2. ^~ 前缀匹配
  3. ~(区分大小写), ~*(不区分大小写) 正则匹配
  4. 普通前缀匹配

2,4的匹配是匹配最长优先。
3 的匹配是按顺序,写在前面的优先。

完全匹配

location = /abc {return 900;
}curl -I localhost:3000/abc
HTTP/1.1 900

location = abc 虽然只少了 / ,但这样是匹配不到的,一个字符也不能差。完全匹配优先级最高,无论写在前面还是后面。

^~ 前缀匹配

# 正则匹配
location ~ abc {return 900;
}
# 前缀匹配
location ^~  /a {return 901;
}curl -I localhost:3000/abc
HTTP/1.1 901

^~ 匹配的优先级高于正则匹配。

初看到 ^~ 的人会误以为是正则匹配。这个要注意下,这个是前缀匹配,就是从前向后一个字符一个字符匹配。

# 普通前缀匹配
/abc/ {
}# 前缀匹配
^~ /abc/ {
}

这两种写法的匹配方式是一样,^~ 的优先级更高。

正则匹配

# 普通前缀匹配
location  /abcd {return 901;
}
# 正则匹配
location ~ /ab {return 902;
}curl -I localhost:3000/abcd
HTTP/1.1 902

正则匹配的优先级高于普通前缀匹配。

# 正则匹配
location ~ /ab {return 901;
}# 正则匹配
location ~ /abc {return 902;
}curl -I localhost:3000/abc
HTTP/1.1 901

正则匹配是按顺序来的,前面的匹配成功,后面的就不再匹配了。

从性能上来说,尽量不要用正则,正则匹配性能最低。

前缀匹配最长优先

location  /abcd {return 901;
}
location  /abc {return 902;
}location ^~ /def {return 903;
}
location ^~ /defg {return 904;
}curl -I localhost:3000/abcd
HTTP/1.1 901curl -I localhost:3000/defg
HTTP/1.1 904
http://www.lryc.cn/news/12532.html

相关文章:

  • chatGPT与人形机器人,高泽龙接受中国经营报采访谈二者发展
  • 进程同步——读者-写者问题
  • Android自动化配置
  • Java程序怎么运行?final、static用法小范围类型转大范围数据类型可以吗?
  • 【数据管理】谈谈哈希原理和散列表
  • 浙江工业大学关于2023年MBA考试初试成绩查询及复试阶段说明
  • 08:进阶篇 - CTK 插件元数据
  • 数据结构与算法之数组寻找峰值分而治之
  • Metasploit 使用篇
  • Java岗面试题--Java并发(日积月累,每日三题)
  • Prometheus监控案例之blackbox-exporter
  • Makefile基础使用和实战详解
  • Go基础-变量
  • 【算法】三道算法题目单词拆分,填充每个节点的下一个右侧节点指针以及组合总和
  • 【算法】刷题路线(系统+全面)
  • Fiddler的报文分析
  • Spring 中,有两个 id 相同的 bean,会报错吗
  • Mysql数据库的时间(4)一查询数据库时间注意点
  • 一起学 pixijs(2):修改图形属性
  • LeetCode 121. 买卖股票的最佳时机
  • shell脚本内调用另外一个shell脚本的几种方法
  • Linux C++ 多进程下write写日志问题思考
  • MySQL的四种事务隔离级别
  • 方法区和元空间有什么关系?
  • 2023VNCTF的两道(暂时)
  • JDK版本区别
  • Android 基础知识4-2.8 TableLayout(表格布局)详解
  • SQL代码编码原则和规范
  • 【博客627】gobgp服务无损变更:graceful restart特性
  • 一起学 pixijs(1):常见图形的绘制