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常用命令放入shell脚本详解
Mar 31 Servers
本地通过nginx配置反向代理的全过程记录
Mar 31 Servers
nginx 防盗链防爬虫配置详解
Mar 31 Servers
nginx结合openssl实现https的方法
Jul 25 Servers
学习nginx基础知识
Sep 04 Servers
CKAD认证中部署k8s并配置Calico插件
Mar 31 Servers
CentOS安装Nginx并部署vue
Apr 12 Servers
如何通过cmd 连接阿里云服务器
Apr 18 Servers
tomcat下部署jenkins的方法
May 06 Servers
nginx实现多geoserver服务的负载均衡
May 15 Servers
windows server2008 开启端口的实现方法
Jun 25 Servers
vscode内网访问服务器的方法
Jun 28 Servers
nginx网站服务如何配置防盗链(推荐)
本地通过nginx配置反向代理的全过程记录
nginx优化的六点方法
Mar 31 #Servers
Nginx优化服务之网页压缩的实现方法
Nginx 负载均衡是什么以及该如何配置
Mar 31 #Servers
Nginx快速入门教程
nginx如何将http访问的网站改成https访问
Mar 31 #Servers
You might like
造就帕卡马拉的帕卡斯是怎么被发现的
2021/03/03 咖啡文化
PHP中调用JAVA
2006/10/09 PHP
在MongoDB中模拟Auto Increment的php代码
2011/03/06 PHP
非常好用的两个PHP函数 serialize()和unserialize()
2012/02/04 PHP
基于HBase Thrift接口的一些使用问题及相关注意事项的详解
2013/06/03 PHP
浅析PHP原理之变量分离/引用(Variables Separation)
2013/08/09 PHP
php新浪微博登录接口用法实例
2014/12/23 PHP
php计算title标题相似比的方法
2015/07/29 PHP
Laravel实现autoload方法详解
2017/05/07 PHP
PHP根据树的前序遍历和中序遍历构造树并输出后序遍历的方法
2017/11/10 PHP
JS获取scrollHeight问题想到的标准问题
2007/05/27 Javascript
javascript 多浏览器 事件大全
2010/03/23 Javascript
jquery 学习笔记一
2010/04/07 Javascript
淘宝网提供的国内NPM镜像简介和使用方法
2014/04/17 Javascript
使用JavaScript实现旋转的彩圈特效
2015/06/23 Javascript
js jquery获取当前元素的兄弟级 上一个 下一个元素
2015/09/01 Javascript
jquery 动态合并单元格的实现方法
2016/08/26 Javascript
javascript数组拍平方法总结
2018/01/20 Javascript
vue scroller返回页面记住滚动位置的实例代码
2018/01/29 Javascript
vue计算属性及使用详解
2018/04/02 Javascript
Vuex 使用 v-model 配合 state的方法
2018/11/13 Javascript
vue动态添加路由addRoutes之不能将动态路由存入缓存的解决
2019/02/19 Javascript
基于layPage插件实现两种分页方式浅析
2019/07/27 Javascript
在Vue中使用mockjs代码实例
2020/11/25 Vue.js
Python 元组(Tuple)操作详解
2014/03/11 Python
Python字典操作简明总结
2015/04/13 Python
微信小程序跳一跳游戏 python脚本跳一跳刷高分技巧
2018/01/04 Python
python使用scrapy发送post请求的坑
2018/09/04 Python
opencv导入头文件时报错#include的解决方法
2019/07/31 Python
当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?
2014/09/09 面试题
单位提档介绍信
2014/01/17 职场文书
DIY手工制作经营店创业计划书
2014/02/01 职场文书
反腐倡廉标语
2014/06/24 职场文书
2015年父亲节寄语
2015/03/23 职场文书
python开发的自动化运维工具ansible详解
2021/08/07 Python
Redis入门教程详解
2021/08/30 Redis