nginx 指定文件路径有两种方式 root 和 alias。root 与 alias 主要区别在于 nginx 如何解析location 后面的 uri,这会使两者分别以不同的方式将请求映射到服务器文件上。
[root]
语法:root path
默认值:root html
配置段:http、server、location、if
[alias]
语法:alias path
配置段:location
例:
location ~ ^/httplogs/ {
root /data/logs
}
如果一个请求的 URI 是/httplogs/share.vhost.cn-access.log 时,web服务器将会返回服务器上的 /data/logs/httplogs/share.vhost.cn-access.log 的文件。 root 会根据完整的 URI 请求来映射,也就是/path/uri。 因此,前面的请求映射为 path/httplogs/share.vhost.cn-access.log。
location ^~ /applogs/ {
alias /data/logs;
}
alias 会把 location 后面配置的路径丢弃掉,把当前匹配到的目录指向到指定的目录。如果一个请求的 URI 是 /applogs/share.vhost.cn-access.log 时,web服务器将会返回服务器上的 /data/logs/share.vhost.cn-access.log 的文件。
1. 使用 alias 时,目录名后面一定要加 "/"。
2. alias 可以指定任何名称。
3. alias 在使用正则匹配时,必须捕捉要匹配的内容并在指定的内容处使用。
4. alias 只能位于 location 块中。