高性能服务器—nginx(六)—root和alias的区别


文章目录

  • 高性能服务器---nginx(六)---root和alias的区别
  • 1.实验
  • root
  • alias
  • 2.root和alias的区别


1.实验

在nginx中,我们可以通过location块与root指令结合的方式,将"url"与"服务器路径"建立起对应关系,location块负责匹配url,root指令负责将匹配到的url与服务器中某个具体目录对应起来
其实,除了root指令,还有另一个指令也能实现类似的功能,它就是alias指令,root指令和alias指令都能将urI和服务器路径进行对应,但是它们之间又存在一些区别

下面通过一个实验来了解root和alias的区别

root

vim /usr/local/nginx/conf/nginx.conf

 47         location /demo {
 48             root /opt/test;
 49 }

[root@server1 ~]# cd /opt/
[root@server1 opt]# ls
demo
[root@server1 opt]# mkdir test
[root@server1 opt]# mv demo test/

nginx -s reload	#在不暂停服务的情况下重新加载

nginx root路径配置及使用 nginx的root_服务器


nginx root路径配置及使用 nginx的root_vim_02


测试:

在页面中:http://172.25.254.1/demo/

http://172.25.254.1/demo/c.jpgnginx root路径配置及使用 nginx的root_nginx root路径配置及使用_03


alias

vim /usr/local/nginx/conf/nginx.conf

 47         location /demo {
 48             alias /opt/test;
 49 }

nginx -s reload

nginx root路径配置及使用 nginx的root_nginx root路径配置及使用_04


测试:在页面中http://172.25.254.1/demo/

http://172.25.254.1/demo/c.jpgnginx root路径配置及使用 nginx的root_nginx_05


[root@server1 demo]# mv c.jpg ..	#将图片移到上层目录
[root@server1 demo]# cd ..	
[root@server1 test]# ls	#此时图片的位置在/opt/test/中

再次测试

nginx root路径配置及使用 nginx的root_服务器_06

2.root和alias的区别

在上面的实验中:

  • root
    location块匹配的url为"/demo",root指令的路径为"/opt/test",那么,根据上述配置,当我们访问"/demo"这个urI时,实际上访问的是/opt/test/demo路径
    配置上述location块后,当我们访问/demo/test/c.jpg这个url时,我们访问的是/opt/test/demo/test/c.jpg简单来说,root就是把url路径补在指定路径后面
  • test
    location块匹配的url为"/demo",alias指令的路径为/opt/test 。如你所见,alias指令对应的值也是一个路径,当alias指令与location块结合时,当我们访问/demo/c.jpg时,其实就是在访问服务器的/opt/test/c.jpg,也就是说,当我们使用alias时,location的urI是与alias的路径完全对等的

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

  • root指令会将location块的"url路径"带入到"root指令路径"中,将带入后的路径作为"最终路径",使用"最终路径"与urI建立对应关系。
  • alias指令则直接将location块的"urI路径"与"alias指令路"建立对应关系
  • alias指令和root指令能够处于的上下文位置也不同,alias指令只能在location块中使用,而root指令则不然