nginx重定向URI之root和alias、rewrite

熟悉Nginx的同学都知道Nginx可以用来做负载均衡和反向代理,非常好用。做前后端分离也是非常的方便。今天我们就来说一下,用Nginx做前后端分离时如何做URI重定向?
什么是URI重定向?

就是说访问某一个或者某一规则URI时由Nginx的配置来决定重定向到另外一个或一类URI。

有啥用呢?

其中一个作用就是可以将请求映射到真实目录。具体啥意思呢?

比如我们的URL是

http://www.abc.com/ITwalking/page/index.html

而index.html在我们的系统目录

D:/resources/ITwalking/page/下

这时我们可以这样配置location:

location /ITwalking {
    root D:/resources/;
}

用root这种方式配置的话,location后面的ITwalking是作为系统目录的,

即D:/resources/下要有/ITwalking/page这层目录。

这种配置是没问题的。

但假如我们的D:/resources/下直接就是page,

然后下面直接就是文件呢,中间没

有/ITwalking这层目录,怎么办呢?你可能会想,新建个ITwalking把page及其中的文件移动到里面,然后用上面的配置不就可以了吗。

可以,但没必要!

非常没必要,因为我们的resources/page目录可能是从git上clone的,如果我们新建目录移动进去,那我们是不是修改了本地git仓库,那我们提交代码或更新时咋办?再移出去?多麻烦啊。(因为我们请求后台必须要加/ITwalking的)

为了解决这个问题,我们可以用 Nginx 的 alias 指令或者 rewrite 指令。
1、alias指令用来重置当前文件的目录,lacation后面的是虚拟目录

location /ITwalking/ {
    #使用 nginx alias 指令
    alias D:/resources/page/;
}

这样,当URL为
http://www.abc.com/ITwalking/page/index.html时,
会将此请求重定向到
D:/resources/page/index.html
此时的ITwalking是虚拟目录,对此目录的访问重置到
D:/resources/page/
2、rewrite重定向,需要配合root指令一起使用

location /ITwalking/ {
    root D:/resources/page/;
    #使用 nginx rewrite 指令
    rewrite ^/ITwalking/(.*?)$ /$1 break;
}

这两种效果是一样的。^/ITwalking/(.*?)$是正则,表示满足这个正则的请求,都重定向到D:/resources/page/下,/$1重定向的地址,break终止匹配。

rewrite是针对http请求的,它里面的路径是网址里面的地址,rewrite做的是地址间的转换。
而root和alias是系统文件路径的设置。
区别是,root用来设置根目录,而alias用来重置当前文件的目录。

关于rewrite和alias重定向的例子先说到这,这也是我实际遇到的,这两种方式完美的满足了我的需求。

二者的详细用法,后续的文章会详细讲解。
————————————————
版权声明:本文为CSDN博主「walking12」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/ibigboy/article/details/90546791

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值