你真的了解nginx重定向URI?-rewrite和alias指令
未经允许不得转载!最近发现有博主转载我的文章,并没有跟我打招呼,也没有注明出处!!!!
熟悉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/;
}
这样,当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重定向的例子先说到这,这也是我实际遇到的,这两种方式完美的满足了我的需求。
二者的详细用法,后续的文章会详细讲解。
文章首发于公众号:编程大道
以及我的个人网站
你真的了解nginx重定向URI?-rewrite和alias指令的更多相关文章
- Nginx 重定向 伪静态 rewrite index.php
参考https://www.kancloud.cn/manual/thinkphp5/177576 thinkphp入口文件同目录下添加.把下面的内容保存为.htaccess文件 <IfModu ...
- Nginx 之四: Nginx服务器的rewrite、全局变量、重定向和防盗链相关功能
一:Nginx 后端服务器组的配置: 1.upstream: 用于设置后端服务器组的主要指令,upstream类似于之前的server块或http块,用法如下: upstreame Myserver{ ...
- Nginx服务器的rewrite、全局变量、重定向和防盗链相关功能
一:Nginx 后端服务器组的配置: 1.upstream: 用于设置后端服务器组的主要指令,upstream类似于之前的server块或http块,用法如下: upstreame Myserver{ ...
- Nginx中的Rewrite的重定向配置与实践
阅读目录 一:理解地址重写 与 地址转发的含义. 二:理解 Rewrite指令 使用 三:理解if指令 四:理解防盗链及nginx配置 简介:Rewrite是Nginx服务器提供的一个重要的功能, ...
- nginx rewrite arg 带问号的地址转发参数处理?Nginx重定向的参数问题
Nginx重定向的参数问题 在给某网站写rewrite重定向规则时,碰到了这个关于重定向的参数处理问题.默认的情况下,Nginx在进行rewrite后都会自动添加上旧地址中的参数部分,而这对于重定向到 ...
- nginx重定向配置
# /etc/nginx/nginx.conf #写在server,location核心模块中,if也可以写.$http_host客户端设法要到达主机的主机名 if ($http_host !~ “^ ...
- nginx下的rewrite
一.正则表达式匹配,其中: * ~ 为区分大小写匹配 * ~* 为不区分大小写匹配 * !~和!~*分别为区分大小写不匹配及不区分大小写不匹配 二.文件及目录匹配,其中: * -f和!-f用来判断是否 ...
- 实例讲解Nginx下的rewrite规则
一.正则表达式匹配,其中:* ~ 为区分大小写匹配* ~* 为不区分大小写匹配* !~和!~*分别为区分大小写不匹配及不区分大小写不匹配二.文件及目录匹配,其中:* -f和!-f用来判断是否存在文件* ...
- nginx重定向规则详细介绍
为何要使用301重定向 在网站建设中需要网页重定向的情况很多:如网页目录结构变动,网页重命名.网页的扩展名改变.网站域名改变等.如果不做重定向,用户的收藏和搜索引擎数据库中的旧地址只能让访客得到一个4 ...
随机推荐
- 资源推荐:PPT快闪资源合集附配套字体下载
样例ppt下载 搜索公众号“拒收”或扫码关注公众号 回复关键字“快闪ppt”获取全部福利 本公众号只出精品,拒收劣质 或者点击菜单链接获取获取全部资源
- jxl解析excel时,处理中文乱码问题
jxl解析excel时,处理中文乱码问题 一般出现较多的问题是,当exce中包含了中文或特殊字符时,在解析时候就会出现乱码现象. 解决方法为: InputStream in = new FileInp ...
- windows环境下安装配置MongoDB
版本选择MongoDB的版本命名规范如:x.y.z: y为奇数时表示当前版本为开发版,如:2.3.0.2.1.1: y为偶数时表示当前版本为稳定版,如:2.0.1.2.2.0: 目前官网上最新的版本为 ...
- 基础查询-SQL和Linq相互化
目录 SELECT SQL SELECT DISTINCT 语句 WHERE 和 操作符 BETWEEN 和操作符 LIKE 和通配符 ORDER BY 排序 TOP In Alias(as) EXI ...
- Java生鲜电商平台-商城后台架构与原型图实战
Java生鲜电商平台-商城后台架构与原型图实战 说明:生鲜电商平台的运营平台,其中需要很多的功能进行管理.目前把架构与原型图实战分享给大家,希望对大家有用. 仪表盘/首页,简单统计,报表页,运营快捷口 ...
- LooseVersion()使用及.__version__版本号的获取
我简单看了distutils库,但发现目前还用不到,感觉有些复杂.因此我简单复制了别人的介绍,如下: Distutils可以用来在Python环境中构建和安装额外的模块.新的模块可以是纯Python的 ...
- DevExpress的TextEdit控件没法调整高度解决
场景 Winform控件-DevExpress18下载安装注册以及在VS中使用: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/1 ...
- C++ 手把手教你实现可变长的数组
01 实现自定义的可变长数组类型 假设我们要实现一个会自动扩展的数组,要实现什么函数呢?先从下面的main函数给出的实现,看看有什么函数是需要我们实现的. int main() { MyArray a ...
- contentOffset、contentSize和contentInset
1.UIScrollView@property(nonatomic)CGPoint contentOffset;这个属性用来表示UIScrollView滚动的位置 @property(nonatomi ...
- Prometheus+Grafana监控MySQL、Redis数据库
俗话说,没有监控的系统就是在裸奔,好的监控就是运维人员的第三只手,第三只眼.本文将使用prometheus及Grafana搭建一套监控系统来监控主机及数据库(MySQL.Redis). 1. 安装G ...