Nginx笔记-指令root与alias

1、前言

在使用Nginx搭建网站时,我们经常会碰见访问网站文件路径404 Not Found的情况。有些时候是因为,文件真的不存在,但有些时候却是因为Nginx的配置文件导致的。为了减少类似的情况,加深对Nginx文件路径的处理认识,特写此文记录相关指令的应用。

2、root与alias的语法

从官网的文件的中,指令root与alias都属于ngx_http_core_module模块,是Nginx的核心功能指令。
其对应的语法分别为:


从上述语法中,可以看出,root指令可用在http、server、location等配置块中,而alias仅可以用在location配置块中。
而root指令大多时候是用来设置文件路径的根目录,而alias则是用来设置文件路径的虚拟目录。其中的区别在于,二者如何处理location
的URI。

3、root与alias的使用

location /i/ {
    root /data/w3;
}

上面是一个root指令的简单配置,当用户访问https://xxx.test.com/i/123.jpg时,Nginx会从设置的根目录/data/w3/中查到是否存在/i/123.jpg这样的文件路径。
如有,则返回图片;无,则返回404 Not Found。
这种也是我们实际应用中比较常见的场景,即root指令会把Location的URI拼接至root指定的文件目录之后。

location /i/ {
    alias /data/w3/images/;
}

而alias指令则有别于root指令,alias会把location后面配置的URI路径丢弃掉,把当前匹配到的目录指向到指定的目录。
如用户访问https://xxx.test.com/i/,Nginx就会尝试匹配访问/data/w3/images/目录下的index.html;
如用户访问https://xxx.test.com/i/123.jpg,Nginx就会尝试匹配访问/data/w3/images/目录下的123.jpg。

Alias在使用时,还需要注意以下几点:

  1. 使用alias时,目录名后面一定要加"/"。
  2. alias可以指定任何名称。
  3. alias在使用正则匹配时,必须捕捉要匹配的内容并在指定的内容处使用。




posted @ 2021-11-13 11:32  酒粒  阅读(691)  评论(0编辑  收藏  举报