nginx短篇(5):在location中使用root和alias

栏目: 服务器 · Nginx · 发布时间: 5年前

内容简介:所属分类:Nginx
  • A+

所属分类:Nginx 运维技术

博主会将与Nginx有关的知识点总结到"nginx短篇系列"文章中,如果你对nginx不是特别了解,请 按照顺序 阅读"nginx短篇系列",以便站在前文的基础上理解新的知识点。

通过前文我们已经知道,在nginx中,我们可以通过location块与root指令结合的方式,将"url"与"服务器路径"建立起对应关系,location块负责匹配url,root指令负责将匹配到的url与服务器中某个具体目录对应起来。

其实,location块匹配到对应的url以后,还能干很多别的事情,当location块匹配到url以后具体执行什么操作,取决于你在location块中配置了哪些指令,关于location的话题可能还需要单独写一篇文章来描述,此处我们先行略过,本文关注的重点是怎样将url与服务器路径建立起对应关系,既然要聊的话题是要将url和路径建立起关联关系,不如就从root指令开始聊起,在前文中我们已经初步接触过root指令,但是并没有详细的描述过怎样使用root指令,那么此处我们就来通过一些示例来演示怎样使用root指令,其实,除了root指令,还有另一个指令也能实现类似的功能,它就是alias指令,root指令和alias指令都能将url和服务器路径进行对应,但是,它们之间又存在一些区别,这篇文章就来详细的聊聊它们。

先从root指令开始,我们先来看一个root指令的示例,如下:

location /demo {
    root /opt/test;
}

上例中,location块匹配的url为"/demo",root指令的路径为"/opt/test",那么,根据上述配置,当我们访问"/demo"这个url时,实际上访问的到底是服务器中的哪个路径呢?答案是"/opt/test/demo"路径,怎么得到这个答案呢?方法很简单,我们只需要将location中的url添加到root指令对应的路径后面,即可得到最终的服务器路径,具体方法如下图所示:

nginx短篇(5):在location中使用root和alias

也就是说,上述配置表示,当我们访问"/demo"这个url时,实际访问的是服务器的"/opt/test/demo"目录,那么,我们来验证一下,看看实际情况如何,首先,创建"/opt/test/demo"目录,并在此目录中放置一张示例图片以便演示,示例图片名称为"nginx.jpg",我已经在默认的server块中配置了上图中的location,重载配置,确定配置生效后,访问链接"http://10.1.1.72/demo/nginx.jpg",最终效果如下:

nginx短篇(5):在location中使用root和alias

可以看到,当我们访问"/demo/nginx.jpg"时,访问的其实就是"/opt/test/demo/nginx.jpg"。

通过上述描述,你肯定已经明白了location和root结合后建立了怎样的对应关系,那么,我们来举一反三试试,配置上述location块后,当我们访问"/demo/test1/nginx.jpg"这个url时,我们访问的是哪个目录中的文件呢?你肯定已经想到了正确答案,答案就是"/opt/test/demo/test1/nginx.jpg"

刚才提到过,除了root指令,alias指令也能将url与服务器路径进行关联,那么我们来看一个alias指令的小示例,如下:

location /demo1 {
    alias /opt/test;
}

如你所见,alias指令对应的值也是一个路径,当alias指令与location块结合时,它们会怎样建立url与服务器路径的对应关系呢?答案如下:上例配置表示,当我们访问"/demo1/nginx1.jpg"时,其实就是在访问服务器的" /opt/test/nginx1.jpg",也就是说,当我们使用alias时,location的url是与alias的路径完全对等的。

看到此处,root指令和alias指令的区别就很明显了。

root指令会将location块的"url路径"带入到"root指令路径"中,将带入后的路径作为"最终路径",使用"最终路径"与url建立对应关系。

alias指令则直接将location块的"url路径"与"alias指令路径"建立对应关系。

其实,除了上述区别,alias指令和root指令能够处于的上下文位置也不同,查看nginx官方手册(查看官方文档的方法前文已经介绍过,如果忘记请回顾前文),可以看到alias指令和root指令的语法说明如下:

Syntax: alias path;
Default: —
Context: location
Syntax: root path;
Default: root html;
Context: http, server, location, if in location

从官网信息可以看出,alias指令只能在location块中使用,而root指令则不然。

上述内容,就是root指令和alias指令之间的区别。

nginx短篇(5):在location中使用root和alias

我的微信公众号

关注"实用运维笔记"微信公众号,当博客中有新文章时,可第一时间得知哦~


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

啊哈!算法

啊哈!算法

啊哈磊 / 人民邮电出版社 / 2014-6-1 / 45.00元

这不过是一本有趣的算法书而已。和别的算法书比较,如果硬要说它有什么特点的话,那就是你能看懂它。 这是一本充满智慧和趣味的算法入门书。没有枯燥的描述,没有难懂的公式,一切以实际应用为出发点, 通过幽默的语言配以可爱的插图来讲解算法。你更像是在阅读一个个轻松的小故事或是在玩一把趣味解谜 游戏,在轻松愉悦中便掌握算法精髓,感受算法之美。 本书中涉及到的数据结构有栈、队列、链表、树......一起来看看 《啊哈!算法》 这本书的介绍吧!

URL 编码/解码
URL 编码/解码

URL 编码/解码

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具