cp from : https://www.cnblogs.com/coder-yoyo/p/6346595.html

location匹配顺序

  1. "="前缀指令匹配,如果匹配成功,则停止其他匹配
  2. 普通字符串指令匹配,顺序是从长到短,匹配成功的location如果使用^~,则停止其他匹配(正则匹配)
  3. 正则表达式指令匹配,按照配置文件里的顺序,成功就停止其他匹配
  4. 如果第三步中有匹配成功,则使用该结果,否则使用第二步结果

注意点

  1. 匹配的顺序是先匹配普通字符串,然后再匹配正则表达式。另外普通字符串匹配顺序是根据配置中字符长度从长到短,也就是说使用普通字符串配置的location顺序是无关紧要的,反正最后nginx会根据配置的长短来进行匹配,但是需要注意的是正则表达式按照配置文件里的顺序测试。找到第一个比配的正则表达式将停止搜索。

  2. 一般情况下,匹配成功了普通字符串location后还会进行正则表达式location匹配。有两种方法改变这种行为,其一就是使用“=”前缀,这时执行的是严格匹配,并且匹配成功后立即停止其他匹配,同时处理这个请求;另外一种就是使用“^~”前缀,如果把这个前缀用于一个常规字符串那么告诉nginx 如果路径匹配那么不测试正则表达式。

匹配模式及顺序

  location = /uri    =开头表示精确匹配,只有完全匹配上才能生效。

  location ^~ /uri   ^~ 开头对URL路径进行前缀匹配,并且在正则之前。

  location ~ pattern  ~开头表示区分大小写的正则匹配。

  location ~* pattern  ~*开头表示不区分大小写的正则匹配。

  location /uri     不带任何修饰符,也表示前缀匹配,但是在正则匹配之后。

  location /      通用匹配,任何未匹配到其它location的请求都会匹配到,相当于switch中的default。

实验案例

  • 测试"^~"和"~",nginx配置如下。浏览器输入http://localhost/helloworld/test,返回601。如将#1注释,#2打开,浏览器输入http://localhost/helloworld/test,返回603。注:#1和#2不能同时打开,如同时打开,启动nginx会报nginx: [emerg] duplicate location "/helloworld"...,因为这两个都是普通字符串。
location ^~ /helloworld {      #1return 601;
}#location /helloworld {        #2
#    return 602;
#}location ~ /helloworld {return 603;
}    

  • 测试普通字符串的长短(普通字符串的匹配与顺序无关,与长短有关)。浏览器输入http://localhost/helloworld/test/a.html,返回601。浏览器输入http://localhost/helloworld/a.html,返回602。
location /helloworld/test/ {        #1return 601;
}location /helloworld/ {                #2return 602;
}

  • 测试正则表达式的顺序(正则匹配与顺序相关)。浏览器输入http://localhost/helloworld/test/a.html,返回602;将#2和#3调换顺序,浏览器输入http://localhost/helloworld/test/a.html,返回603
location /helloworld/test/ {        #1return 601;
}location ~ /helloworld {            #2return 602;
}location ~ /helloworld/test {        #3return 603;
}

转载于:https://www.cnblogs.com/0616--ataozhijia/p/9681886.html

[Nginx] Nginx 配置location总结相关推荐

  1. Nginx—核心配置location匹配规则说明

    2019独角兽企业重金招聘Python工程师标准>>> location介绍 location指令是Nginx中最核心的一项配置,根据预先定义的URL匹配规则来接收用户发送的请求,根 ...

  2. nginx中配置location的root(alias)访问同一个地址文件

    我要访问http://yuming.com/B/c.html 按照正常的location配置应该是这样的: location / { root /data/html; index index.html ...

  3. 必学必会的nginx配置location匹配顺序总结

    location 匹配规则: location 路径正则匹配: 符号 说明 ~ 正则匹配,区分大小写 ~* 正则匹配,不区分大小写 ^~ 普通字符匹配,如果该选项匹配,则,只匹配该选项,不再向下匹配其 ...

  4. nginx配置location匹配顺序总结

    location匹配顺序 "="前缀指令匹配,如果匹配成功,则停止其他匹配 普通字符串指令匹配,顺序是从长到短,匹配成功的location如果使用^~,则停止其他匹配(正则匹配) ...

  5. Nginx配置location及rewrite规则

    Nginx配置location及rewrite规则 示例: location  = / { # 精确匹配 / ,主机名后面不能带任何字符串 [ configuration A ] } location ...

  6. nginx location 匹配 多个规则_nginx配置location与rewrite规则教程

    nginx配置location与rewrite规则教程 location 教程 示例: location = / { # 精确匹配 / ,主机名后面不能带任何字符串 [ configuration A ...

  7. nginx安装、nginx前端配置、后端配置、前后端分离配置、https支持(ssl配置)、负载均衡配置、nginx location详解

    nginx配置 一.nginx安装 二.nginx配置 仅前端配置 仅后端配置 前后分离配置(1) 前后分离配置(2) 前后不分离配置 https/ssl配置 负载均衡配置 数据压缩配置 三.完整ng ...

  8. Nginx配置文件中location配置

    [标题]:Nginx location "/" 配置 服务访问 服务请求如下(示例): nginx服务: http://127.0.0.1:80 后台服务:http://127.0 ...

  9. nginx技术(2)nginx的配置详解

    nginx的配置 1,启动nginx 1 2 3 4 5 6 7 [root@centos6 nginx-1.2.9]# /usr/sbin/nginx -c /etc/nginx/nginx.con ...

最新文章

  1. android程序在调试时出现了套接字异常“java.net.SocketException: Permission denied”该如何解决...
  2. 解决tomcat中文传输乱码问题
  3. Bag of Words cpp实现(stable version 0.01)
  4. 企业网络设计,看这6个案例就够了
  5. tiny cc在云服务centos上运行
  6. linux怎么查看内核定义的结构体,Linux如何查找一个结构体的原始定义
  7. java读取csv合适文件_解析-您可以推荐一个Java库来读取(并可能写入)CSV文件吗?...
  8. 向Maven的本地库中添加jar文件
  9. 推荐一个很健康护眼的eclipse主题
  10. 韩顺平 php大牛班课程,2016泰牛程序员韩顺平PHP大牛班HTML课程完整笔记资料.doc...
  11. linux 是什么?
  12. 如何从 Ubuntu 20.04 LTS 升级到 Ubuntu 22.04 “Jammy Jellyfish”|Linux 中国
  13. IVX低代码平台开发——微信小程序实现抽奖功能
  14. Android 6.0 Marshmallow
  15. 【单目标优化求解】基于matlab增强型黑猩猩优化器算法求解单目标优化问题【含Matlab源码 2013期】
  16. 【STM32】IO引脚复用器和映射原理与配置
  17. Liferay 6.0??
  18. 短距离无线通讯-RFID
  19. 如何使用一个for循环输出九九乘法表
  20. MySQL索引详解之索引的利弊以及高效使用

热门文章

  1. 判断两个多边形相交的面积_聊聊3D模型组件—顶点,边,多边形
  2. 华为java安全编码规范_Java安全编码之SQL注入
  3. php exec 怎么确定执行成功_php执行系统外部命令的4种方法
  4. 启动mysql服务是报错找不到pid_mysql报错 The server quit without updating PID file
  5. 智能车竞赛线上培训:英飞凌AURIX的智能车应用--基础四轮篇
  6. 第十六届智能车竞赛 | 单车拉力组浅析
  7. DRV8825步进电机驱动控制模块以及双轴平台
  8. STC8K28步进电机ULC2003触发器
  9. 信号转换| 如何使用模拟电路完成对方波信号倍频PWM转换?
  10. Error running ‘xxx-web-order‘: Unable to open debugger port : java.net.Socke