Nginx中break与last的区别详析


Posted in Servers onMarch 31, 2021

先说区别

  • last,重写后的规则,会继续用重写后的值去匹配下面的location。
  • break,重写后的规则,不会去匹配下面的location。使用新的规则,直接发起一次http请求了。

Nginx 配置文件

server {
  listen 88;
  server_name _;
  location /break { # location 1
   rewrite ^/break/(.*)$ /bak/$1 break;
  }
  location /last { # location 2
   rewrite ^/last/(.*)$ /bak/$1 last;
  }

  location /bak { # location 3
   default_type text/html;
   return 200 $uri;
  }

}

访问 http://rumenz.com:88/break/one

命中location1,浏览器地址栏没有变,直接去找 /nginx/html/bak/one 文件,由于没有这个文件所以返回404。

浏览器

Nginx中break与last的区别详析

Nginx错误(error.log)日志

/nginx/html/bak/one failed (2: No such file or directory)

break 表示重写后停止不再匹配 location 块。

访问 http://rumenz.com:88/last/one

命中location2,浏览器地址栏没有变,重新匹配到 location3 

Nginx中break与last的区别详析 

last表示重写后跳到location块再次用重写后的地址匹配

break 和 last 的使用场景

break

文件下载,隐藏保护真实文件服务器。

location /down {
 rewrite ^/down/(.*)$ https://rumenz.com/file/$1 break;
}

last

接口地址改写,将 https://rumenz.com/api/list 改写成 https://rumenz.com/newapi/list

location /api {
 rewrite ^/api/(.*)$ /newapi/$1 last;
}

location /newapi {
 default_type Application/json;
 return 200 '{"code":200,"msg":"ok","data":["JSON.IM","json格式化"]}';
}

总结

到此这篇关于Nginx中break与last区别的文章就介绍到这了,更多相关Nginx中break与last区别内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Servers 相关文章推荐
Nginx实现反向代理
Sep 20 Servers
nginx里的rewrite跳转的实现
Mar 31 Servers
浅谈Nginx 中的两种限流方式
Mar 31 Servers
教你利用Nginx 服务搭建子域环境提升二维地图加载性能的步骤
Sep 25 Servers
详解nginx安装过程并代理下载服务器文件
Feb 12 Servers
Nginx的基本概念和原理
Mar 21 Servers
nginx常用配置conf的示例代码详解
Mar 21 Servers
Windows Server 2019 安装DHCP服务及相关配置
Apr 28 Servers
安装harbor作为docker镜像仓库的问题
Jun 14 Servers
Nginx开源可视化配置工具NginxConfig使用教程
Jun 21 Servers
云服务器部署 Web 项目的实现步骤
Jun 28 Servers
nginx之内存池的实现
Jun 28 Servers
nginx网站服务如何配置防盗链(推荐)
本地通过nginx配置反向代理的全过程记录
nginx优化的六点方法
Mar 31 #Servers
Nginx优化服务之网页压缩的实现方法
Nginx 负载均衡是什么以及该如何配置
Mar 31 #Servers
Nginx快速入门教程
nginx如何将http访问的网站改成https访问
Mar 31 #Servers
You might like
简单的移动设备检测PHP脚本代码
2011/02/19 PHP
input file获得文件根目录简单实现
2013/04/26 PHP
PHP实现把数字ID转字母ID
2013/08/12 PHP
PHP对文件夹递归执行chmod命令的方法
2015/06/19 PHP
CI框架(CodeIgniter)公共模型类定义与用法示例
2017/08/10 PHP
PHP number_format函数原理及实例解析
2020/07/14 PHP
基于JQuery实现相同内容合并单元格的代码
2011/01/12 Javascript
javascript开发随笔一 preventDefault的必要
2011/11/25 Javascript
nodejs调用cmd命令实现复制目录
2015/05/04 NodeJs
jquery实现不包含当前项的选择器实例
2015/06/25 Javascript
JSON字符串转JSON对象
2015/07/31 Javascript
JavaScript中localStorage对象存储方式实例分析
2017/01/12 Javascript
webpack热模块替换(HMR)/热更新的方法
2018/04/05 Javascript
vue中在vuex的actions中请求数据实例
2019/11/08 Javascript
记录微信小程序 height: calc(xx - xx);无效问题
2019/12/30 Javascript
解决vue下载后台传过来的乱码流的问题
2020/12/05 Vue.js
[53:15]Newbee vs Pain 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
Python类的定义、继承及类对象使用方法简明教程
2015/05/08 Python
Python函数式编程指南(四):生成器详解
2015/06/24 Python
Bottle框架中的装饰器类和描述符应用详解
2017/10/28 Python
python清理子进程机制剖析
2017/11/23 Python
浅谈Python中重载isinstance继承关系的问题
2018/05/04 Python
对tf.reduce_sum tensorflow维度上的操作详解
2018/07/26 Python
一行代码让 Python 的运行速度提高100倍
2018/10/08 Python
python自动化工具之pywinauto实例详解
2019/08/26 Python
wxpython布局的实现方法
2019/11/01 Python
Django2 连接MySQL及model测试实例分析
2019/12/10 Python
Python对象的属性访问过程详解
2020/03/05 Python
Python ATM功能实现代码实例
2020/03/19 Python
Python定义函数实现累计求和操作
2020/05/03 Python
纽约服装和生活方式品牌:Saturdays NYC
2017/08/13 全球购物
万宝龙英国官网:Montblanc手表、书写工具、皮革和珠宝
2018/10/16 全球购物
Jar包的作用是什么
2014/03/30 面试题
英语系毕业生自荐信
2013/10/31 职场文书
五年级数学教学反思
2014/02/11 职场文书
杭白菊导游词
2015/02/10 职场文书