Nginx 配置中的 root 与 alias 指令的区别

发布于 2021-03-18 12:48:02 字数 1345 浏览 1112 评论 0

root 和 alias 都可以定义在 location 模块中,都是用来指定请求资源的真实路径,比如:

location /i/ {
    root /data/w3;
}

请求 http://foofish.net/i/top.gif 这个网址时,那么在服务器里面对应的真正的资源是 /data/w3/i/top.gif文件,注意真实的路径是root指定的值加上location指定的值。

而 alias 正如其名,alias 指定的路径是 location 的别名,不管 location 的值怎么写,资源的真实路径都是 alias 指定的路径,比如:

location /i/ {
    alias /data/w3/images/;
}

同样请求 http://foofish.net/i/top.gif 时,在服务器查找的资源路径是:/data/w3/images/top.gif,也就是说不管 location 的值怎么指定,只要 alias 设置的 /data/w3/images/,就会在 /data/w3/images/ 目录找,比如:

 location /i/xxx/ {
    alias /data/w3/images/;
}

请求 http://foofish.net/i/xxx/top.gif,查找的资源路径还是 /data/w3/images/top.gif。

Nginx 配置文件 server 中指定两个 location 执行,分别为root 和 alias 指令:

location /test/ {
          root /www/test;
}

按照这种配置,则访问 /test/ 目录下的文件时,nginx 会去 /www/test/test/ 目录下找文件:

location /test/ {
           alias /www/test/;
}

按照上述配置,则访问 /test/ 目录里面的文件时,nginx 会去 /www/test/ 目录找文件:

http://nginx.org/en/docs/http/ngx_http_core_module.html#root
http://nginx.org/en/docs/http/ngx_http_core_module.html#alias
  1. alias 是一个目录别名的定义,root 则是最上层目录的定义。
  2. 另一个区别是 alias 后面必须要用 / 结束,否则会找不到文件,而 root 则对 / 可有可无。
  3. 误区:认为 root 是指 /www/test 目录下,而应该是 /www/test/test 目录 。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

JSmiles

生命进入颠沛而奔忙的本质状态,并将以不断告别和相遇的陈旧方式继续下去。

0 文章
0 评论
84961 人气
更多

推荐作者

已经忘了多久

文章 0 评论 0

15867725375

文章 0 评论 0

LonelySnow

文章 0 评论 0

走过海棠暮

文章 0 评论 0

轻许诺言

文章 0 评论 0

信馬由缰

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文