0%

nginx中root与alias关键字的区别

前言

近段时间秋招上岸了,于是每天疯狂补各种分布式基础,每天都在痛苦与快乐中度过。
在学习 nginx 的时候,遇到配置上的问题:root 与 alias 的区别,卡了大概三个小时,记录下来警醒自己不要再犯了。

正文

在使用 “/” 进行配置时,两者没有区别,一样都是在 root 或者 alias 指定的路径寻找文件,所以以下的过程与结果都跟此无关。

  • 测试用例的构建

    1
    2
    3
    4
    5
    6
    7
    location /static2 {
    root /static;
    }

    location /static1 {
    alias /static;
    }
  • 图片示例及存放位置

2.jpeg : /static/

5.jpeg : /static/static2/

  • 启动 nginx 并输入 url

http://192.168.99.100:8091/static1/2.jpeg

http://192.168.99.100:8091/static2/5.jpeg

  • 结果

  • 结果分析
    从访问 url,映射关系 relation 以及文件位置 location 综合来看,可以得出以下规律:

2.jpeg : alias = location !=url

5.jpeg : root + location = url

  • 结论

个人认为,alias 起到一个文件路径重定向的功能,能有效隐藏文件真实路径。相对来说root 更像在指定 root 文件夹中寻找文件,文件路径树容易被猜测导致安全问题的发生。

    本文首发于 cartoon的博客

    转载请注明出处:https://cartoonyu.github.io/cartoon-blog/post/nginx/nginx中root与alias关键字的区别/