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 负载均衡是什么以及该如何配置
Mar 31 Servers
Nginx解决前端访问资源跨域问题的方法详解
Mar 31 Servers
Nginx配置80端口访问8080及项目名地址方法解析
Mar 31 Servers
Nginx配置Https安全认证的实现
May 26 Servers
Nginx下SSL证书安装部署步骤介绍
Dec 06 Servers
CentOS7安装GlusterFS集群以及相关配置
Apr 12 Servers
Windows Server 2012 修改远程默认端口3389的方法
Apr 28 Servers
服务器间如何实现文件共享
May 20 Servers
解决Git推送错误non-fast-forward的方法
Jun 25 Servers
Linux安装Docker详细教程
Jul 07 Servers
Win10系统搭建ftp文件服务器详细教程
Aug 05 Servers
nginx网站服务如何配置防盗链(推荐)
本地通过nginx配置反向代理的全过程记录
nginx优化的六点方法
Mar 31 #Servers
Nginx优化服务之网页压缩的实现方法
Nginx 负载均衡是什么以及该如何配置
Mar 31 #Servers
Nginx快速入门教程
nginx如何将http访问的网站改成https访问
Mar 31 #Servers
You might like
Memcache 在PHP中的使用技巧
2010/02/08 PHP
PHP 中关于ord($str)>0x80的详细说明
2012/09/23 PHP
php导入大量数据到mysql性能优化技巧
2014/12/29 PHP
Laravel 读取 config 下的数据方法
2019/10/13 PHP
Sample script that deletes a SQL Server database
2007/06/16 Javascript
Js 弹出框口并返回值的两种常用方法
2010/12/30 Javascript
Js 回车换行处理的办法及replace方法应用
2013/01/24 Javascript
简单谈谈javascript代码复用模式
2015/01/28 Javascript
angularJS中router的使用指南
2015/02/09 Javascript
JQuery中绑定事件(bind())和移除事件(unbind())
2015/02/27 Javascript
浅谈Jquery为元素绑定事件
2015/04/27 Javascript
JS获取元素多层嵌套思路详解
2016/05/16 Javascript
js封装成插件的步骤方法
2017/09/11 Javascript
node.js 用socket实现聊天的示例代码
2017/10/17 Javascript
vue使用websocket的方法实例分析
2019/06/22 Javascript
Vue项目前后端联调(使用proxyTable实现跨域方式)
2020/07/18 Javascript
python二叉树遍历的实现方法
2013/11/21 Python
Python multiprocessing.Manager介绍和实例(进程间共享数据)
2014/11/21 Python
Scrapy框架CrawlSpiders的介绍以及使用详解
2017/11/29 Python
从DataFrame中提取出Series或DataFrame对象的方法
2018/11/10 Python
python 字典 setdefault()和get()方法比较详解
2019/08/07 Python
python中with语句结合上下文管理器操作详解
2019/12/19 Python
python 弧度与角度互转实例
2020/04/15 Python
python 5个实用的技巧
2020/09/27 Python
Html5游戏开发之乒乓Ping Pong游戏示例(二)
2013/01/21 HTML / CSS
HTML5触摸事件演化tap事件介绍
2016/03/25 HTML / CSS
日本无添加化妆品:HABA
2016/08/18 全球购物
意大利在线高尔夫商店:Online Golf
2021/03/09 全球购物
常用UNIX 命令(Linux的常用命令)
2015/12/26 面试题
超市中秋节促销方案
2014/03/21 职场文书
中秋节主持词
2014/04/02 职场文书
面试必备的求职信
2014/05/25 职场文书
新农村建设典型材料
2014/05/31 职场文书
2014年绿化工作总结
2014/12/09 职场文书
2015年四年级班主任工作总结
2015/10/22 职场文书
解决SpringCloud Feign传对象参数调用失败的问题
2021/06/23 Java/Android