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 比 Apache 更牛逼
Mar 31 Servers
Apache Calcite 实现方言转换的代码
Apr 24 Servers
解决xampp安装后Apache无法启动
Mar 21 Servers
nginx.conf配置文件结构小结
Apr 08 Servers
CentOS安装Nginx并部署vue
Apr 12 Servers
IIS服务器中设置HTTP重定向访问HTTPS
Apr 29 Servers
Tomcat弱口令复现及利用
May 06 Servers
docker 制作mysql镜像并自动安装
May 20 Servers
服务器SVN搭建图文安装过程
Jun 21 Servers
Windows server 2022创建创建林、域树、子域的步骤
Jun 25 Servers
win10+RTX3050ti+TensorFlow+cudn+cudnn配置深度学习环境的方法
Jun 25 Servers
Linux中各个目录的作用与内容
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的memcached客户端memcached
2011/06/14 PHP
用js实现计算代码行数的简单方法附代码
2007/08/13 Javascript
javascript XMLHttpRequest对象全面剖析
2010/04/24 Javascript
javascript 实用的文字链提示框效果
2010/06/30 Javascript
JavaScript中去掉数组中的重复值的实现方法
2011/08/03 Javascript
web的各种前端打印方法之jquery打印插件jqprint实现网页打印
2013/01/09 Javascript
JavaScript instanceof 的使用方法示例介绍
2013/10/23 Javascript
轻松创建nodejs服务器(5):事件处理程序
2014/12/18 NodeJs
javascript中函数作为参数调用的方法
2015/02/09 Javascript
javascript实现密码验证
2015/11/10 Javascript
js判断上传文件后缀名是否合法
2016/01/28 Javascript
很酷的星级评分系统原生JS实现
2016/08/25 Javascript
chrome浏览器如何断点调试异步加载的JS
2016/09/05 Javascript
jQuery grep()方法详解及实例代码
2016/10/30 Javascript
jQuery实现可编辑表格并生成json结果(实例代码)
2017/07/19 jQuery
React-Native做一个文本输入框组件的实现代码
2017/08/10 Javascript
详解Chai.js断言库API中文文档
2018/01/31 Javascript
element UI upload组件上传附件格式限制方法
2018/09/04 Javascript
使用javascript做时间倒数读秒功能的实例
2019/01/23 Javascript
微信小程序使用map组件实现检索(定位位置)周边的POI功能示例
2019/01/23 Javascript
JS自定义对象创建与简单使用方法示例
2020/01/15 Javascript
原生js实现的金山打字小游戏(实例代码详解)
2020/03/16 Javascript
微信小程序间使用navigator跳转传值问题实例分析
2020/03/27 Javascript
Python使用plotly绘制数据图表的方法
2017/07/18 Python
Python中scatter函数参数及用法详解
2017/11/08 Python
python3.6 实现AES加密的示例(pyCryptodome)
2018/01/10 Python
决策树剪枝算法的python实现方法详解
2019/09/18 Python
python系列 文件操作的代码
2019/10/06 Python
CSS3轻松实现清新 Loading 效果的简单实例
2016/06/06 HTML / CSS
篝火晚会策划方案
2014/05/16 职场文书
2014年村支部书记四风对照检查材料思想汇报
2014/10/02 职场文书
小学一年级数学教学计划
2015/01/20 职场文书
2016年过年放假安排通知
2015/08/18 职场文书
详解Django中 render() 函数的使用方法
2021/04/22 Python
redis三种高可用方式部署的实现
2021/05/11 Redis
用Java实现简单计算器功能
2021/07/21 Java/Android