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+Tomcat实现负载均衡、动静分离的原理解析
Mar 31 Servers
nginx实现发布静态资源的方法
Mar 31 Servers
Nginx配置https原理及实现过程详解
Mar 31 Servers
apache基于端口创建虚拟主机的示例
Apr 22 Servers
配置nginx 重定向到系统维护页面
Jun 08 Servers
zabbix自定义监控nginx状态实现过程
Nov 01 Servers
nginx.conf配置文件结构小结
Apr 08 Servers
在Docker容器中部署SQL Server
Apr 11 Servers
阿里云ECS云服务器快照的概念以及如何使用
Apr 21 Servers
Nginx配置之禁止指定IP访问
May 02 Servers
nginx配置限速限流基于内置模块
May 02 Servers
Nginx代理Redis哨兵主从配置的实现
Jul 15 Servers
nginx网站服务如何配置防盗链(推荐)
本地通过nginx配置反向代理的全过程记录
nginx优化的六点方法
Mar 31 #Servers
Nginx优化服务之网页压缩的实现方法
Nginx 负载均衡是什么以及该如何配置
Mar 31 #Servers
Nginx快速入门教程
nginx如何将http访问的网站改成https访问
Mar 31 #Servers
You might like
PHP中for循环语句的几种变型
2007/03/16 PHP
php使用MySQL保存session会话的方法
2015/06/18 PHP
PHP文件上传之多文件上传的实现思路
2016/01/27 PHP
JSON字符串传到后台PHP处理问题的解决方法
2016/06/05 PHP
php实现生成code128条形码的方法详解
2017/07/19 PHP
网页javascript精华代码集
2007/01/24 Javascript
ext实现完整的登录代码
2008/08/08 Javascript
jQuery Validation插件remote验证方式的Bug解决
2010/07/01 Javascript
基于JQuery实现滚动到页面底端时自动加载更多信息
2014/01/31 Javascript
排序算法的javascript实现与讲解(99js手记)
2014/09/28 Javascript
jQuery 限制输入字符串长度
2016/06/20 Javascript
详解js的事件处理函数和动态创建html标记方法
2016/12/16 Javascript
JS库之wow.js使用方法
2017/09/14 Javascript
Vue2.0用户权限控制解决方案
2017/11/29 Javascript
js数组常用最重要的方法
2018/02/04 Javascript
layui 监听表格复选框选中值的方法
2018/08/15 Javascript
JavaScript实现公告栏上下滚动效果
2020/03/13 Javascript
node.js如何操作MySQL数据库
2020/10/29 Javascript
Python selenium如何设置等待时间
2016/09/15 Python
python操作xlsx文件的包openpyxl实例
2018/05/03 Python
基于python实现简单日历
2018/07/28 Python
使用Python和Prometheus跟踪天气的使用方法
2019/05/06 Python
Linux下通过python获取本机ip方法示例
2019/09/06 Python
浅析python内置模块collections
2019/11/15 Python
Python带参数的装饰器运行原理解析
2020/06/09 Python
python开发前景如何
2020/06/11 Python
Scholastic父母商店:儿童书籍
2017/01/01 全球购物
法国家具及室内配件店:home24
2017/01/21 全球购物
Fairyseason:为个人和批发商提供女装和配件
2017/03/01 全球购物
英国折扣高尔夫商店:Discount Golf Store
2019/11/19 全球购物
Servlet的生命周期
2013/08/25 面试题
应届大专毕业生个人自荐信
2013/09/22 职场文书
中学生爱国演讲稿
2013/12/31 职场文书
海南地接欢迎词
2014/01/14 职场文书
Python中三种花式打印的示例详解
2022/03/19 Python
Linux磁盘管理方法介绍
2022/06/01 Servers