nginx root与alias的区别

root与alias的区别

​ root与alias路径匹配主要区别在于nginx如何解释location后面的uri,这会使两者分别以不同的方式将请求映射到服务器文件上,alias是一个目录别名的定义,root则是最上层目录的定义。

​ 简而言之: root的处理结果是:location路径+root路径 alias的处理结果是:使用alias定义的路径
示例:

root配置:

vim root.conf

server {
listen 80;
server_name linux.root.com;
location /download {
root /code;
}
}

使用root时,当我请求 http://linux.root.com/download/1.jpg 时,实际上是去找服务器上 /code/download/1.jpg 文件

alias配置:

vim /etc/nginx/conf.d/alias.conf

server {  
listen 80;  
server_name linux.alias.com;
location /download {    
alias /code;  
}
}

使用alias时,当我请求 http://linux.root.com/download/1.jpg 时,实际上是去找服务器上 /code/1.jpg 文件

/ 的重要性(不正确的配置会造成漏洞)
NGINX 是一个 Web 服务器,也可用作反向代理、负载平衡器、邮件代理和 HTTP 缓存。NGINX alias 指令定义了指定位置的替换。例如,在 /i/top.gif 的请求上使用以下配置:

location /i/ {

alias /data/w3/images/;

}

将发送文件 /data/w3/images/top.gif。但是,如果 /i../app/config.py 请求上的位置没有以目录分隔符(即 /)结尾:

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

将发送文件 /data/w3/app/config.py。alias 的不正确配置可能会允许攻击者读取存储在目标文件夹外的文件。

posted @ 2021-03-16 10:43  (◓3◒)  阅读(242)  评论(0)    收藏  举报