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

我的微信公众号

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


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

查看所有标签

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

大数据供应链

大数据供应链

娜达·R·桑德斯 (Nada R. Sanders) / 丁晓松 / 中国人民大学出版社 / 2015-7-1 / CNY 55.00

第一本大数据供应链落地之道的权威著作,全球顶级供应链管理专家娜达·桑德斯博士聚焦传统供应链模式向大数据转型,助力工业4.0时代智能供应链构建。 在靠大数据驱动供应链处于领先地位的企业中,45% 是零售商,如沃尔玛、亚马逊,而22%是快消企业,如戴尔电脑。他们都前所未有地掌控了自己的供应链。在库存管理、订单履行率、原材料和产品交付上具有更为广阔的视野。利用具有预见性的大数据分析结果,可以使供需......一起来看看 《大数据供应链》 这本书的介绍吧!

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

HTML 编码/解码

SHA 加密
SHA 加密

SHA 加密工具

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具