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在使用时,还需要注意以下几点:
- 使用alias时,目录名后面一定要加"/"。
- alias可以指定任何名称。
- alias在使用正则匹配时,必须捕捉要匹配的内容并在指定的内容处使用。