Nginx root与alias

Nginx root与alias

nginx 指定文件路径有两种方式 root 和 alias,alias 指定的目录是准确的,root 是指定目录的上级目录,并且该上级目录要含有 location 指定名称的同名目录。

另外,使用 alias 标签的目录块中不能使用 rewrite 的 break。

Nginx root详解

语法

root path

默认值

root html

上下文

http、server、location、if

Nginx alias详解

语法

alias path

上下文

location

root与alias主要区别

  1. alias 指定的目录是准确的,即 location 匹配访问的 path 目录下的文件直接是在 alias 目录下查找的;
  2. root 指定的目录是 location 匹配访问的 path 目录的上一级目录,这个 path 目录一定要是真实存在 root 指定目录下的;
  3. 使用 alias 标签的目录块中不能使用 rewrite 的 break(具体原因不明);另外,alias 指定的目录后面必须要加上 “/” 符号!
  4. alias 虚拟目录配置中,location 匹配的 path 目录如果后面不带 “/”,那么访问的 url 地址中这个 path 目录后面加不加 “/” 不影响访问,访问时它会自动加上 “/”;但是如果 location 匹配的 path 目录后面加上 “/”,那么访问的 url 地址中这个 path 目录必须要加上 “/”,访问时它不会自动加上 “/”。如果不加上 “/”,访问就会失败!
  5. root 目录配置中,location 匹配的 path 目录后面带不带 “/”,都不会影响访问。

Nginx root与alias配置

语法

root与alias file ... uri root与alias file ... = code

作用域

server location

实例

root与alias $uri $uri/ /index.php?q=$uri&$args;

说明

  1. 按指定的 file 顺序查找存在的文件,并使用第一个找到的文件进行请求处理。
  2. 查找路径是按照给定的 root 或 alias 为根路径来查找的。
  3. 如果给出的 file 都没有匹配到,则重新请求最后一个参数给定的 uri,就是新的 location 匹配。
  4. 如果是格式 2,如果最后一个参数是 = 404 ,若给出的 file 都没有匹配到,则最后返回 404 的响应码。

Nginx root与alias实例

实例一

location xxx { root yyy }

浏览器访问 xxx,实际访问的是 yyy/xxx。

浏览器访问 xxx/abc.html,实际访问的是 yyy/xxx/abc.html。

浏览器访问 xxx/ccc/abc.html,实际访问的是 yyy/xxx/ccc/abc.html。

也就说说 root 属性,会把 root 的值(这里是 yyy)加入到访问路径(locaition)之前。

实例二

locaiton xxx { # alias必须以 / 结束,否则无效 alias yyy/ }

浏览器访问 xxx,实际访问的是 yyy。

浏览器访问 xxx/abc.html,实际访问的是 yyy/abc.html。

浏览器访问 xxx/ccc/abc.html,实际访问的是 yyy/ccc/abc.html。

也就说说 alias 属性,会把 alias 的值(这里是 yyy)替代访问路径匹配的部分(这里是 xxx)。

Nginx root与alias总结

nginx 指定文件路径有两种方式 root 和 alias,alias 指定的目录是准确的,root 是指定目录的上级目录,并且该上级目录要含有 location 指定名称的同名目录。

另外,使用 alias 标签的目录块中不能使用 rewrite 的 break。