`

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。 

分享到:
评论

相关推荐

    浅谈apache和nginx的rewrite的区别

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

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

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

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

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

    nginx重写rewrite基础及实例分享

    nginx rewrite 正则表达式匹配 大小写匹配 ~ 为区分大小写匹配 ~* 为不区分大小写匹配 !~和!~*分别为区分大小写不匹配及不区分大小写不匹配 文件及目录匹配 -f和!-f用来判断是否存在文件 -d和!-d用来判断是否存在...

    Nginx Rewrite使用场景及配置方法解析

    Nginx Rewrite使用场景 ... 2.URL伪静态,将动态页面显示为静态页面方式的一种技术,减少动态URL地址对外暴露过多的参数,提升更高的安全性。...last 停止处理后续rewrite指令集,跳出location作用域,并开始搜

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

    三.rewrite指令的最后一项参数为flag标记,flag标记有: 1.last 相当于apache里面的[L]标记,表示rewrite。 2.break本条规则匹配完成后,终止匹配,不再匹配后面的规则。 3.redirect 返回302临时重定向,浏览器地址...

    nginx rewrite 伪静态配置参数详细说明

    * last 相当于Apache里的[L]标记,表示完成rewrite * break 终止匹配, 不再匹配后面的规则 * redirect 返回302临时重定向 地址栏会显示跳转后的地址 * permanent 返回301永久重定向 地址栏会显示跳转后的地

    nginx rewrite 伪静态配置参数和使用例子

    -x用来判断文件是否可执行 flag标记有: * last 相当于Apache里的[L]标记,表示完成rewrite * break 终止匹配, 不再匹配后面的规则 * redirect 返回302临时重定向 地址栏会显示跳转后的地址 * permanent 返回301永久...

    Nginx服务器中的重定向配置参考指南

    nginx的rewrite相当于apache的rewriterule(大多数情况下可以把原有apache的rewrite规则加上引号就可以直接使用),它可以用在server,location 和IF条件判断块中,命令格式如下: rewrite 正则表达式 替换目标 flag标记...

    nginx 伪静态Rewrite正则资源汇总

    中间用到了{6}指前面的字符得复6次,然后平移动linux系统下面,采用nginx 的Rewrite来重写url 结果加载nginx的时候提示报错 代码如下: rewrite ^/(.{6})(\d{3})(.+)/php/ http://www.xxx.com/qq$2.apk break; 找了...

    nginx-insight

    nginx洗冤录,包含工作...break和last的区别; location寻址; http 304响应的相关内容; nginx中400, 408, 411的分析; 新增nginx1.4.2版本bug导致的411响应; 新增nginx proxy_read_timeout设置不合理导致的400影响;

    Nginx 转发匹配规则的实现

    三.rewrite指令的最后一项参数为flag标记,flag标记有 last 相当于 apache 里面的[L]标记,表示 rewrite。 break 本条规则匹配完成后,终止匹配,不再匹配后面的规则。 redirect 返回302临时重定

    七牛魔签 完美运营级别+IOS一键签名程序+app超级签名一键分发平台

    rewrite “^/([a-zA-Z0-9]{6})$” /user/install/index/$1/ last; rewrite ^(.*)$ /index.php?s=$1 last; break; } } 数据库配置文件:/data/conf/database.php 后台地址:域名/HNYMWL001 后台账户:admin

    七牛魔签 完美运营级别 IOS+app超级签名一键分发平台

    rewrite “^/([a-zA-Z0-9]{6})$” /user/install/index/$1/ last; rewrite ^(.*)$ /index.php?s=$1 last; break; } } 数据库配置文件:/data/conf/database.php 后台地址:域名/HNYMWL001 后台账户:admin

    nginx 开启 pathinfo的过程详解

    apache往nginx去转,代码端用到了$_SERVER[‘PATH_INFO’],对于nginx默认是不开启pathinfo的。所以我们就要手动开启 1,url重写 location / { //方法1 if (!-e $request_filename) { rewrite ^/(.*)$ /index....

    【微盘】基金宝余额宝版[已删除广告+已清后门]

    服务器系统:Linux + Centos7.x + 宝塔 ...rewrite ^(.*)$ /index.php?s=$1 last; break; } } 行情:/colleraaa.html【浏览器打开,别关闭】 特别说明:服务器需要支持访问境外网站 否则行情+K线无效

    【魔签】完美运营级别+IOS一键签名程序+app超级签名一键分发平台+七牛魔签.zip

    源码简介与安装说明: IOS APP超级签名一键分发平台(七牛魔签)是一款app分发源码-app签名-完美运营级别IOS一键签名程序,该系统完全在linux下运行,源码不存在使用第三方收费工具,市面上很多系统都是使用的是第三...

    [27500]【微盘源码】基金宝+余额宝+充值提现+行情+K线+已删除广告+已清后门.zip

    源码简介与安装说明: 服务器系统:Linux + Centos7.x + 宝塔 亲测环境:Nginx 1.18.0 + PHP5.6 + Mysql5.5 数据库配置文件:/Application/database.php Nginx伪静态设置 location / { if (!-e $request_filename...

Global site tag (gtag.js) - Google Analytics