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同一个域名配置多个项目的实现方法
Mar 31 Servers
nginx处理http请求实现过程解析
Mar 31 Servers
Nginx + consul + upsync 完成动态负载均衡的方法详解
Mar 31 Servers
解决使用了nginx获取IP地址都是127.0.0.1 的问题
Sep 25 Servers
Shell脚本一键安装Nginx服务自定义Nginx版本
Mar 20 Servers
使用kubeadm命令行工具创建kubernetes集群
Mar 31 Servers
Docker官方工具docker-registry案例演示
Apr 13 Servers
Nginx静态压缩和代码压缩提高访问速度详解
May 30 Servers
linux目录管理方法介绍
Jun 01 Servers
服务器SVN搭建图文安装过程
Jun 21 Servers
zabbix如何添加监控主机和自定义监控项
Aug 14 Servers
教你使用Ubuntu搭建DNS服务器
Sep 23 Servers
nginx网站服务如何配置防盗链(推荐)
本地通过nginx配置反向代理的全过程记录
nginx优化的六点方法
Mar 31 #Servers
Nginx优化服务之网页压缩的实现方法
Nginx 负载均衡是什么以及该如何配置
Mar 31 #Servers
Nginx快速入门教程
nginx如何将http访问的网站改成https访问
Mar 31 #Servers
You might like
php实现的MySQL通用查询程序
2007/03/11 PHP
PHP计算指定日期所在周的开始和结束日期的方法
2015/03/24 PHP
Laravel框架实现超简单的分页效果示例
2019/02/08 PHP
php多进程应用场景实例详解
2019/07/22 PHP
JavaScript 错误处理与调试经验总结
2010/08/10 Javascript
jquery中dom操作和事件的实例学习-表单验证
2011/11/30 Javascript
js弹出层包含flash 不能关闭隐藏的2种处理方法
2013/06/17 Javascript
js操纵dom生成下拉列表框的方法
2014/02/24 Javascript
JavaScript变量的作用域全解析
2015/08/14 Javascript
JavaScript数组方法总结分析
2016/05/06 Javascript
原生js仿jquery animate动画效果
2016/07/13 Javascript
bootstrap侧边栏圆点导航
2017/01/11 Javascript
完美的js图片轮换效果
2017/02/05 Javascript
AngularJS constant和value区别详解
2017/02/28 Javascript
详解wow.js中各种特效对应的类名
2017/09/13 Javascript
原生JS上传大文件显示进度条 php上传文件代码
2020/03/27 Javascript
JS引用传递与值传递的区别与用法分析
2018/06/01 Javascript
详解关于html,css,js三者的加载顺序问题
2019/04/10 Javascript
JavaScript封闭函数及常用内置对象示例
2019/05/13 Javascript
layui实现图片虚拟路径上传,预览和删除的例子
2019/09/25 Javascript
关于vue组件事件属性穿透详解
2019/10/28 Javascript
python正则匹配查询港澳通行证办理进度示例分享
2013/12/27 Python
解决vscode python print 输出窗口中文乱码的问题
2018/12/03 Python
python 实现敏感词过滤的方法
2019/01/21 Python
Python何时应该使用Lambda函数
2019/07/02 Python
Python drop方法删除列之inplace参数实例
2020/06/27 Python
python 无损批量压缩图片(支持保留图片信息)的示例
2020/09/22 Python
python 常见的反爬虫策略
2020/09/27 Python
Pandas数据分析的一些常用小技巧
2021/02/07 Python
教师绩效工资方案
2014/02/01 职场文书
2014年两会学习心得体会
2014/03/10 职场文书
煤矿班组长竞聘书
2014/03/31 职场文书
煤矿开采专业求职信
2014/07/08 职场文书
2014年党建工作汇报材料
2014/11/02 职场文书
华清池导游词
2015/02/02 职场文书
JavaScript小技巧带你提升你的代码技能
2021/09/15 Javascript