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基于域名,端口,不同IP的虚拟主机设置的实现
Mar 31 Servers
如何在centos上使用yum安装rabbitmq-server
Mar 31 Servers
nginx作grpc的反向代理踩坑总结
Jul 07 Servers
Apache Hudi的多版本清理服务彻底讲解
Mar 31 Servers
Windows Server 2012 R2 磁盘分区教程
Apr 29 Servers
Win10 Anaconda安装python-pcl
Apr 29 Servers
排查Tomcat进程假死的问题
May 06 Servers
docker 制作mysql镜像并自动安装
May 20 Servers
Windows Server 2008配置防火墙策略详解
Jun 28 Servers
Apache Kafka 分区重分配的实现原理解析
Jul 15 Servers
ssh服务器拒绝了密码 请再试一次已解决(亲测有效)
Aug 14 Servers
nginx网站服务如何配置防盗链(推荐)
本地通过nginx配置反向代理的全过程记录
nginx优化的六点方法
Mar 31 #Servers
Nginx优化服务之网页压缩的实现方法
Nginx 负载均衡是什么以及该如何配置
Mar 31 #Servers
Nginx快速入门教程
nginx如何将http访问的网站改成https访问
Mar 31 #Servers
You might like
快速配置PHPMyAdmin方法
2008/06/05 PHP
PHP把网页保存为word文件的三种方法
2014/04/01 PHP
php遍历树的常用方法汇总
2015/06/18 PHP
php图片添加文字水印实现代码
2016/03/15 PHP
php 猴子摘桃的算法
2017/06/20 PHP
基于php流程控制语句和循环控制语句(讲解)
2017/10/23 PHP
ThinkPHP5与单元测试PHPUnit使用详解
2020/02/23 PHP
ExtJs 表单提交登陆实现代码
2010/08/19 Javascript
jquery乱码与contentType属性设置问题解决方案
2013/01/07 Javascript
JQuery入门——事件切换之hover()方法应用介绍
2013/02/05 Javascript
JS和jquery获取各种屏幕的宽度和高度的代码
2013/08/02 Javascript
JS和Jquery获取和修改label的值的示例代码
2014/01/15 Javascript
JavaScript中setUTCMilliseconds()方法的使用详解
2015/06/12 Javascript
最新最热最实用的15个jQuery插件汇总
2015/07/05 Javascript
完美实现bootstrap分页查询
2015/12/09 Javascript
JS中传递参数的几种不同方法比较
2017/01/20 Javascript
jQuery简单获取DIV和A标签元素位置的方法
2017/02/07 Javascript
Bootstrap下拉菜单Dropdowns的实现代码
2017/03/17 Javascript
js实现把时间戳转换为yyyy-MM-dd hh:mm 格式(es6语法)
2017/12/28 Javascript
微信小程序实现列表页的点赞和取消点赞功能
2018/11/02 Javascript
js实现百度登录窗口拖拽效果
2020/03/19 Javascript
python使用str & repr转换字符串
2016/10/13 Python
python添加模块搜索路径方法
2017/09/11 Python
Python读写文件基础知识点
2019/06/10 Python
在python中利用numpy求解多项式以及多项式拟合的方法
2019/07/03 Python
django 控制页面跳转的例子
2019/08/06 Python
Django+uni-app实现数据通信中的请求跨域的示例代码
2019/10/12 Python
django使用JWT保存用户登录信息
2020/04/22 Python
Django+RestFramework API接口及接口文档并返回json数据操作
2020/07/12 Python
全球销量第一生发产品:Viviscal
2017/12/21 全球购物
美国领先的机场停车聚合商:Airport Parking Reservations
2020/02/28 全球购物
PHP中如何创建和修改数组
2012/05/02 面试题
个人政风行风自查自纠报告
2014/10/21 职场文书
2016优秀大学生个人事迹材料范文
2016/03/01 职场文书
Python办公自动化PPT批量转换操作
2021/09/15 Python
MySQL深分页问题解决思路
2022/12/24 MySQL