nginx的rewrite配置, if, break, last, return

概述

rewrite可以实现域名跳转(重定向)、URL重写(伪静态)、动静分离(跳转域名,并接入CDN实现加速,适合小站点)。

  1. 重定向(Redirect)就是通过各种方法将各种网络请求重新定个方向转到其它位置(如:网页重定向、域名的重定向、路由选择的变化也是对数据报文经由路径的一种重定向)。

  2. 伪静态是相对真实静态来讲的,通常我们为了增强搜索引擎的友好面,都将文章内容生成静态页面,但是有的朋友为了实时的显示一些信息。或者还想运用动态脚本解决一些问题。不能用静态的方式来展示网站内容。但是这就损失了对搜索引擎的友好面。怎么样在两者之间找个中间方法呢,这就产生了伪静态技术。
    从URL结构以及页面名称看,伪静态和静态页面是一样的。伪静态的页面后缀可以是html htm 或者是目录格式;
    伪静态只是改变了URL的表现形式,实际上还是动态页面;
    静态页面可以节省服务器资源,伪静态本质上还是动态页面,所以消耗资源是和动态页面一样的,而且因为Rewrite服务器还需要消耗额外的资源。

  3. 动静分离是指在web服务器架构中,将静态页面与动态页面或者静态内容接口和动态内容接口分开不同系统访问的架构设计方法,进而提升整个服务访问性能和可维护性。

if语句

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
如要将匹配内容大写小写都匹配,可在~后加*号;

在这里插入图片描述
-f判断是否存在
在这里插入图片描述

rewrite中的break和last

在这里插入图片描述

添加rewrite_log on可记录rewrite的详细过程在error_log里边(error_log 级别需要是notice);
error_log /var/log/nginx/error.log notice; (/etc/nginx/nginx.conf)

上面语句的rewrite情况:
在这里插入图片描述

  • 使用break让rewrite结束
    在这里插入图片描述
    上面语句的rewrite情况:
    在这里插入图片描述
    把break改成last跟上面的例子的效果是一样的;
    break跟last使用location时效果会不一样;

  • 多重rewrite
    在这里插入图片描述
    注意:变成 b.html后,再被location /匹配,所以实施location /里面的语句,是否有/1.html或/2.html实施改写,两者都不符合;
    在这里插入图片描述

  • location中使用break;
    在这里插入图片描述
    break后结束;
    在这里插入图片描述

  • location中使用last
    在这里插入图片描述

访问/1.html,匹配/,改写成/2.html,接着last中断语句,但以链接/2.html会再从上到下走一次,第二次走的时候可以匹配/和/2.html,/2.html匹配更精准,所以实施改写成/a.html,然后再走第三次,都不匹配,直接访问/a.html;在这里插入图片描述

return

在这里插入图片描述

  • return可以直接使用在server {} 段里;
    在这里插入图片描述
    return 403;这一行跟deny all;是一样的;

  • return使用在if 段里;

在这里插入图片描述
匹配到.htpasswd返回404;
在这里插入图片描述

  • return 字符串;

    要指定状态码为200;
    在这里插入图片描述

  • return 变量

在这里插入图片描述
在这里插入图片描述

  • return html代码
    在这里插入图片描述

跳到$host$request_uri根据要访问的域名和uri跳转;
在这里插入图片描述
在这里插入图片描述
使用跳转到html代码,让网站访问正常而不会跳转到赌博网站

  • return 链接,类似rewrite;
    在这里插入图片描述
    在这里插入图片描述

网址前加状态码301也可以,就变成301; 如果改成200,变成翻回字符串;
在这里插入图片描述

在这里插入图片描述

rewrite规则

在这里插入图片描述

  • 域名重定向的两种写法
    在这里插入图片描述
  • 连续循环和解决
    在这里插入图片描述

示例4是想实现,访问这个域名的目录跳到/123.com/abc目录下(不跳转是访问/123.com目录),但是以上语句会造成连续循环;
curl -L 可以展示每一次重定向,最多50次;

在这里插入图片描述

  • 使用break解决


这个情况下访问不带/abc的链接如/1.html,会转到/abc/1.html,符合业务逻辑,但是如果有人访问/abc/1.html,会访问到/abc/abc/1.html,不符合业务逻辑。

  • 使用if 语句解决

在这里插入图片描述
不带目录,跳转到/abc下;
在这里插入图片描述
带/abc链接,不再跳转;
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值