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

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

内容简介:所属分类: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

我的微信公众号

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


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

查看所有标签

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

Design systems

Design systems

Not all design systems are equally effective. Some can generate coherent user experiences, others produce confusing patchwork designs. Some inspire teams to contribute to them, others are neglected. S......一起来看看 《Design systems》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

在线进制转换器
在线进制转换器

各进制数互转换器

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码