Nginx在配置访问静态页面的时候,经常使用root和alias两种方式,这两种方式区别如下:
如果使用root指定,那么url的请求路径是要加入到root指定的路径中
如果使用alias指定,那么请求的url路径不需要加入到alias指定的路径中,但是alias指定的路径结尾一定要加”/”
alias用法举例
1、下面在Nginx配置文件中定义路由,group后面有”/”,并通过alias指定,如图:

创建html目录,并定义文件index.html的内容,如下:
mkdir -p data/htmlecho "hello, I am an nginx static file" > index.html
此时通过IP地址访问,可以看到已经访问成功,请求结果并没加入alias路径中,如图:

2、修改上面的路由,将group后面的”/”去掉,如图:

再次请求,可以发现对结果并不影响,如图:

因此,无论group后面有没有”/”,或者定义为/group/abc/def,对结果都没有影响,因为请求的路由不会加入到alias指定路径中
3、修改上述路由,添加一个abcd.html,并在/data/html下追加文件abcd.html,内容如下:
echo "hello, My name is abcd, I am an file" > abcd.html

此时通过Nginx来访问,默认还是访问到/data/html/index.html,如果要想访问到abcd.html,那么就需要将index.html删除,我们这里将index.html改为index.html.bak,然后再次请求,如图:

4、路由文件配置不变,在/data/html下新增目录abcd/def,以及index.html,如图:


在路由后加上新增的路径来请求,可以看到能请求到内容,如图:

注意:alias只能用于指定目录,不能指定文件,否则请求会报错
root用法举例
1、修改上述配置文件,将alias改为root,如果直接访问将会报错,如图:


上面我们说过使用root指定路径后,location中的路由是会加入到路径中的,因此,我们在/data/html目录下创建group目录,并在group中定义index.html,内容如下:
hello, I am an nginx static file, in group
重新加载配置文件后,访问结果如图:

2、修改上面的路由,增加abcd.html,如图:

此时请求的时候实际是将/group/abcd.html追加到root路径后的,因此需要在group中创建abcd.html文件,内容为:
hello, My name is abcd.html, in group
再次通过浏览器请求,可以获取到内容,如图:

上面几个简单例子就是root和alias的用法,大家可根据实际情况灵活变通即可
注意:root或者alias指定路径最好不要是/tmp目录下的,否则可能因为权限问题无法访问




