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结合openssl实现https的方法
Jul 25 Servers
配置Kubernetes外网访问集群
Mar 31 Servers
OpenStack虚拟机快照和增量备份实现方法
Apr 04 Servers
Vscode中SSH插件如何远程连接Linux
May 02 Servers
配置nginx负载均衡
May 06 Servers
详解如何使用Nginx解决跨域问题
May 06 Servers
关于windows server 2012 DC 环境 重启后蓝屏代码:0xc00002e2的问题
May 25 Servers
Tomcat安装使用及部署Web项目的3种方法汇总
Aug 14 Servers
Nginx 502 bad gateway错误解决的九种方案及原因
Aug 14 Servers
ubuntu如何搭建vsftpd服务器
Dec 24 Servers
解决ubuntu安装软件时,status-code=409报错的问题
Dec 24 Servers
nginx网站服务如何配置防盗链(推荐)
本地通过nginx配置反向代理的全过程记录
nginx优化的六点方法
Mar 31 #Servers
Nginx优化服务之网页压缩的实现方法
Nginx 负载均衡是什么以及该如何配置
Mar 31 #Servers
Nginx快速入门教程
nginx如何将http访问的网站改成https访问
Mar 31 #Servers
You might like
php array_search() 函数使用
2010/04/13 PHP
ThinkPHP自动填充实现无限级分类的方法
2014/08/22 PHP
Laravel路由设定和子路由设定实例分析
2016/03/30 PHP
[原创]php简单防盗链验证实现方法
2016/07/09 PHP
javascript 面向对象,实现namespace,class,继承,重载
2009/10/29 Javascript
JS中confirm,alert,prompt函数使用区别分析
2010/04/01 Javascript
node.js中的http.response.end方法使用说明
2014/12/14 Javascript
JavaScript中Date.toSource()方法的使用教程
2015/06/12 Javascript
javascript jquery对form元素的常见操作详解
2016/06/12 Javascript
js放大镜放大购物图片效果
2017/01/18 Javascript
JS对象与JSON互转换、New Function()、 forEach()、DOM事件流等js开发基础小结
2017/08/10 Javascript
Vue渲染函数详解
2017/09/15 Javascript
Webpack中雪碧图插件使用详解
2018/05/25 Javascript
React 组件间的通信示例
2018/06/14 Javascript
Vue-cli@3.0 插件系统简析
2018/09/05 Javascript
vue 循环加载数据并获取第一条记录的方法
2018/09/26 Javascript
vue路由 遍历生成复数router-link的例子
2019/10/30 Javascript
浅谈如何优雅处理JavaScript异步错误
2019/11/12 Javascript
小程序点餐界面添加购物车左右摆动动画
2020/09/23 Javascript
Python并发编程协程(Coroutine)之Gevent详解
2017/12/27 Python
Python中关键字global和nonlocal的区别详解
2018/09/03 Python
Django实现随机图形验证码的示例
2020/10/15 Python
html5使用canvas绘制一张图片
2014/12/15 HTML / CSS
Canvas globalCompositeOperation
2018/12/18 HTML / CSS
人力资源部培训专员岗位职责
2014/01/02 职场文书
英文商务邀请信
2014/01/22 职场文书
致铅球运动员加油稿
2014/02/13 职场文书
临床护理求职信
2014/04/26 职场文书
讲文明树新风演讲稿
2014/05/12 职场文书
2014教育局对照检查材料思想汇报
2014/09/23 职场文书
2014年四风个人对照检查及整改措施
2014/10/28 职场文书
2014幼儿园家长工作总结
2014/11/10 职场文书
巾帼文明岗汇报材料
2014/12/24 职场文书
2015年党支部公开承诺书
2015/01/22 职场文书
Python如何识别银行卡卡号?
2021/06/10 Python
解决SpringBoot文件上传临时目录找不到的问题
2021/07/01 Java/Android