`
ruijf
  • 浏览: 69732 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

Nginx rewrite last 和break区别

阅读更多

摘自 http://www.sudone.com/nginx/nginx_rewrite_last_break.html

在实际配置中,有的地方用last并不能工作,换成break就可以,其中的原理是对于根目录的理解有所区别,按我的测试结果大致是这样的。

#location / {
#proxy_pass http://test;
#alias /home/html/;
#root /home/html;
#rewrite "^/a/(.*)\.html$" /1.html last;
#}

在#location / { 配置里:

1、使用root指定源:使用last和break都可以

2、使用proxy_pass指定源:使用last和break都可以

3、使用alias指定源:必须使用last

在location /a/或使用正则的location ~ ^/a/里:

1、使用root指定源:使用last和break都可以

2、使用proxy_pass指定源:使用break和last结果有所区别

3、使用alias指定源:必须使用last

其中区别主要在proxy_pass这个标签上,再看看几个测试结果:

location / {
root /home/html;
}

location /a/ {
proxy_pass http://test;
rewrite "^/a/(.*)\.html$" /1.html last;
}

在这段配置里,使用last访问是可以访问到东西的,不过,它出来的结果是:/home/html/1.html;可我需要的是http://test/1.html?使用break就可以了。

location / {
root /home/html;
}

location /a/ {
proxy_pass http://test;
rewrite "^/a/(.*)\.html$" /a/1.html last;
}

在这段配置里,返回错误,因为last会重新发起请求匹配,所以造成了一个死循环,使用break就可以访问到http://test/a/1.html。

所以,使用last会对server标签重新发起请求,而break就直接使用当前的location中的数据源来访问,要视情况加以使用。一般在非根的location中配置rewrite,都是用的break;而根的location使用last比较好,因为如果配置了fastcgi或代理访问jsp文件的话,在根location下用break是访问不到。测试到rewrite有问题的时候,也不妨把这两者换换试试。

至于使用alias时为什么必须用last,估计是nginx本身就限定了的,怎么尝试break都不能成功。

分享到:
评论

相关推荐

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

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

    浅谈apache和nginx的rewrite的区别

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

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

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

    nginx重写rewrite基础及实例分享

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

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

    Nginx Rewrite使用场景 1.URL地址跳转,例如用户访问pm.com将其跳转到baidu.com或者当用户通过http的方式访问时,将其跳转至https的方式访问。 2.URL伪静态,将动态页面显示为静态页面方式的一种技术,减少动态URL地址...

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

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

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

    一.正则表达式匹配,其中: * ~ 为区分大小写匹配 ...1.last 相当于apache里面的[L]标记,表示rewrite。 2.break本条规则匹配完成后,终止匹配,不再匹配后面的规则。 3.redirect 返回302临时重定向,浏览器地址会显示

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

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

    nginx 301 302重定向跳转配置.docx

    rewrite ^(.*)$ /nginx-ie/$1 break; } ``` 五、Nginx 的文件和目录判断 Nginx 的文件和目录判断可以使用 `-f`、`-d`、`-e`、`-x` 等指令来判断文件或目录是否存在。 例如,以下配置使用 IF 条件判断来重定向文件...

    nginx 伪静态Rewrite正则资源汇总

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

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

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

    七牛魔签 完美运营级别+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

    汽车理财区块链程序源码.zip

    服务器系统:Linux+宝塔 ... rewrite ^(.*)$ /index.php?s=$1 last; break; } } 先暂停,等他上传完成 后台地址:/admin 后台用户:admin 后台密码:3eym.com 前台账号:18888888888 前台密码:123456

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

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

    nginx-insight

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

    AB自动发卡平台源码 v2.4.2版.zip 多商户

    推荐使用 宝塔控制面板进行搭建 ...rewrite ^(.*)$ /index.php?s=$1 last; break; } } 定时任务 cd /目录/ && php think AutoCash cd /目录/ && php think UnfreezeMoney >> runtime/log/crontab.log

    全新API接口管理系统PHP源码.zip

    食用方法 ... Nginx请设置如下伪静态 Apache无需配置 运行目录默认即可 location / { ...rewrite ^(.*)$ /index.php?s=$1 last; break; } } 将程序上传至网站根目录,访问域名/install进行安装操作

Global site tag (gtag.js) - Google Analytics