nginx 指定文件路径有两种方式 root 和 alias,主要区别在于 nginx 如何解释 location 后面的 uri,这会使两者分别以不同的方式将请求映射到服务器文件上。它们的使用方法和作用域:
[root]
语法:root path
默认值:root html
配置段:http、server、location、if
处理结果:root 路径+ location 路径
[alias]
语法:alias path
配置段:location
处理结果:使用 alias 路径替换 location 路径
如果一个请求的 URI 是/t/a.html 时,它们表现如下:
可以看出 alias 是一个目录别名的定义,root 则是最上层目录的定义。另外 alias 后面必须要用/
结束,否则会找不到文件的,而 root 则可有可无。
那如果 server 和 location 中都出现 root,是怎样的优先级呢??
简单的来说是就近原则,如果 location 中能匹配到,就是用 location 中的 root 配置,忽略 server 中的 root,当 location 中匹配不到的时候,则使用 server 中的 root 配置。