nginx中root与alias关键字的区别

时间:2021-03-16 08:32:56

前言

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

正文

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

  • 测试用例的构建
location /static2 {
root /static;
} location /static1 {
alias /static;
}
  • 图片示例及存放位置

2.jpeg : /static/

5.jpeg : /static/static2/

nginx中root与alias关键字的区别

  • 启动 nginx 并输入 url

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

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

  • 结果
    nginx中root与alias关键字的区别

  • 结果分析
    从访问 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关键字的区别/