想要把静态文件映射为某些URL,看了location的匹配规则,于是乎写成如下配置。

location ^~ /file/ {

    root /file/;

    index index.html;

}

发现一只是404的返回,不管怎么改就是不对。开始想自己理解有误。

其实虚拟目录应该写成alias的形式,root 只是把url给重写了,使得前端跟后端看到的请求不一样。

location ^~ /166file/ {

     alias /166file_linux/;

}

引起这个误会的原因其实是nginx 的原生配置里初始化就是

location / {

            root   html;

            index  index.html index.htm;

        }

自然的就认为匹配到html文件下,其实是nginx的home文件下的相对位置html。

所以自然讲到二者之间的区别:

1.alias后跟的指定目录是准确的,并且末尾必须加“/”,否则找不到文件
location /sohu/ { 
      alias /qq/
}

如果访问站点http://location/sohu访问的就是/qq/目录下的站点信息。

2.root后跟的指定目录是上级目录,并且该上级目录下要含有和location后指定名称的同名目录才行,末尾“/”加不加无所谓。
location /sina/ { 
      root /net/
}

如果访问站点http://location/sina访问的就是/sina/net目录下的站点信息。

3.一般情况下,在location /中配置root,在location /other中配置alias是一个好习惯。