`

Nginx rewrite 中break与last指令的区别

阅读更多

PS:原创文章,如需转载,请注明出处,谢谢!     

本文地址:http://flyer0126.iteye.com/blog/2257670

 

nginx rewrite指令
语法:rewrite regex replacement [flag];
默认值:无
作用域:server,location,if
如果一个URI匹配指定的正则表达式regex,URI就按照replacement重写。
rewrite按配置文件中出现的顺序执行。flags标志可以停止/继续处理。
如果replacement以”http://”或”https://”开始,将不再继续处理,这个重定向将返回给客户端。
flag可以是如下参数:
  last 停止处理后续rewrite指令集,然后对当前重写的新URI在rewrite指令集上重新查找。
  break 停止处理后续rewrite指令集,并不在重新查找。
  redirect 如果replacement不是以http:// 或https://开始,返回302临时重定向
  permant 返回永久重定向的HTTP状态301 ※原有的url支持正则 重写的url不支持正则
最终完整的重定向URL包括请求scheme(http://,https://等),请求的server_name_in_redirect和 port_in_redirec三部分,说白了也就是http协议 域名 端口三部分组成。

示例如下:

location /break/ {
     rewrite ^/break/(.*) /test/$1 break;
     return 402;
}

location /last/ {
     rewrite ^/last/(.*) /test/$1 last;
     return 403;
}

location /test/ {
     return 508;
}

请求: http://domain/break/*
返回:404

请求: http://domain/last/*

返回:508

原因:根据上述内容,break与last都停止处理后续rewrite指令集,不同之处在与last会重新发起新的请求,而break不会。当请求break时,如匹配内容存在的话,可以直接请求成功,返回200;而如果请求内容不存在,则返回404。当请求为last的时候,会对重写的新uri重新发起请求,如上例则返回508。

总结:last与break都停止处理后续rewrite指令集,最大的不同是,last会重新发起一个新请求,并重新匹配location。 

分享到:
评论

相关推荐

    Nginx的Rewrite规则与实例

    ### Nginx的Rewrite规则与实例:深入解析与应用 在现代Web服务器管理与运维领域,Nginx因其高效、稳定以及丰富的功能而备受推崇。其中,Rewrite模块是Nginx的一项重要特性,它允许管理员对HTTP请求进行重写、重定向...

    Nginx关于Rewrite执行顺序详解.docx

    在Nginx中,Rewrite模块是实现URL重写的重要工具,它允许我们根据预定义的规则对请求的URL进行转换,从而实现动态URL到静态URL的映射、隐藏真实路径、实现URL路由等目的。这篇文档将深入解析Nginx中Rewrite模块的...

    实例讲解nginx的rewrite规则

    在Nginx中,使用`rewrite`指令可以实现对URL的重写,其中涉及到正则表达式的匹配方式有以下几种: 1. **区分大小写的匹配**:使用`~`符号,例如:`rewrite ^/example /otherpage permanent;` - 这种情况下,`/...

    Nginx配置的rewrite编写时last与break的区别分析

    在使用nginx配置rewrite中经常会遇到有的地方用last并不能工作,换成break就可以,其中的原理是对于根目录的理解有所区别,按我的测试结果大致是这样的。 location / { proxy_pass http://test; alias /home/...

    nginx rewrite规则

    Nginx的`rewrite`规则还可以与其他指令结合,比如`if`语句,实现更复杂的逻辑判断。但需要注意的是,`if`语句在Nginx中的使用应当谨慎,因为它的执行时机可能引发性能问题。 **6. 与location的关系** `rewrite`...

    Nginx中rewrite实现二级域名、三级域名、泛域名、路径的重写[文].pdf

    Nginx 中 rewrite 实现二级域名、三级域名、泛域名、路径的重写 Nginx 中的 rewrite 模块是实现 URL 重写和.redirect 的强大工具。下面我们将详细介绍 Nginx 中如何使用 rewrite 实现二级域名、三级域名、泛域名、...

    nginx设置rewrite规则

    下面将详细介绍如何在LNMP环境中配置Nginx的rewrite规则。 首先,了解rewrite规则的基本概念。Nginx的rewrite模块允许我们根据特定的条件重写请求的URI,这在实现URL路由、隐藏真实路径、SEO优化等方面非常有用。它...

    浅谈apache和nginx的rewrite的区别

    Nginx Rewrite规则相关指令有if、rewrite、set、return、break等,其中rewrite是最关键的指令。一个简单的Nginx Rewrite规则语法如下: rewrite ^/b/(.*)\.html /play.php?video=$1 break; 如果加上if语句,示例如下...

    nginx rewrite规则怎么配置-.docx

    在Web服务器优化和URL管理中,Nginx的Rewrite规则扮演着重要角色。它允许我们根据特定条件重写请求的URL,从而实现动态URL到静态URL的转换、URL规范化、路径重定向等。Nginx的Rewrite规则可以在配置文件的不同位置...

    nginx rewrite重写规则与防盗链配置方法教程详解

    导读:nginx rewrite重写规则与防盗链配置方法,rewrite规则格式中flag标记的几种形式,盗链时返回403错误,允许的域名直接跟在第二行的域名后面。 nginx rewrite重写规则与防盗链配置方法如下所示: nginx rewite...

    nginx之rewrite

    rewrite规则在nginx的配置文件中定义,通常在server、location和if指令块中使用。 一、Nginx rewrite规则定义 rewrite规则通过正则表达式匹配请求的URI,并且可以结合标志位来实现URL重写或重定向。使用全局变量...

    详解nginx rewrite和根据url参数location

    其中,`<regex>` 是正则表达式,`<replacement>` 是替换后的 URL,`[flag]` 可选标志,如 `last`(停止当前规则集的匹配)、`break`(跳出当前规则)、`redirect`(返回重定向)等。 3. **示例** 例如,将所有以 ...

    nginx中location中关于proxy_pass和rewrite的应用.rar

    在Nginx服务器配置中,`location`指令是核心部分,用于处理HTTP请求。当我们谈论`proxy_pass`和`rewrite`时,这是两种强大的功能,它们可以协同工作以实现复杂的URL路由和反向代理设置。下面我们将深入探讨这两个...

    nginx rewrite 实现URL跳转的方法

    在Nginx配置文件中,Rewrite规则被定义在server块中。一条基本的Rewrite规则包括三个部分:patten(匹配模式)、replace(替换字符串)、flag(标志位)。patten使用正则表达式来匹配请求的URI,replace则定义了当...

    Nginx Rewrite规则与使用介绍和技巧实例

    它支持 Rewrite 模块,该模块是Nginx的一个重要组成部分,负责实现URL的重写与重定向,是SEO优化和网站前端架构中不可或缺的功能。 正则表达式匹配是Nginx Rewrite模块中非常重要的一个功能。Nginx通过使用正则...

Global site tag (gtag.js) - Google Analytics