首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >nginx重定向URI之rewrite和alias

nginx重定向URI之rewrite和alias

作者头像
编程大道
发布2019-07-15 16:45:56
2.9K0
发布2019-07-15 16:45:56
举报
文章被收录于专栏:编程大道编程大道

熟悉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重定向的例子先说到这,这也是我实际遇到的,这两种方式完美的满足了我的需求。

二者的详细用法,后续的文章会详细讲解。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-05-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 BiggerBoy 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
负载均衡
负载均衡(Cloud Load Balancer,CLB)提供安全快捷的流量分发服务,访问流量经由 CLB 可以自动分配到云中的多台后端服务器上,扩展系统的服务能力并消除单点故障。负载均衡支持亿级连接和千万级并发,可轻松应对大流量访问,满足业务需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档