内容简介:所属分类: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指令对应的路径后面,即可得到最终的服务器路径,具体方法如下图所示:
也就是说,上述配置表示,当我们访问"/demo"这个url时,实际访问的是服务器的"/opt/test/demo"目录,那么,我们来验证一下,看看实际情况如何,首先,创建"/opt/test/demo"目录,并在此目录中放置一张示例图片以便演示,示例图片名称为"nginx.jpg",我已经在默认的server块中配置了上图中的location,重载配置,确定配置生效后,访问链接"http://10.1.1.72/demo/nginx.jpg",最终效果如下:
可以看到,当我们访问"/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指令之间的区别。
我的微信公众号
关注"实用运维笔记"微信公众号,当博客中有新文章时,可第一时间得知哦~
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- RecyclerView使用指南(一)—— 基本使用
- 如何使用Meteorjs使用URL参数
- 使用 defer 还是不使用 defer?
- 使用 Typescript 加强 Vuex 使用体验
- [译] 何时使用 Rust?何时使用 Go?
- UDP协议的正确使用场合(谨慎使用)
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
URL 编码/解码
URL 编码/解码
RGB HSV 转换
RGB HSV 互转工具