文档章节

Nginx配置中的location、root、alias

阿dai学长
 阿dai学长
发布于 2017/08/17 18:44
字数 695
阅读 322
收藏 2

Nginx配置中location、root和alias的关系一直很让人困惑,查询好多资料也没能搞明白,于是自己进行了实际操作,整理一篇小白看的懂得文章!欲知详情,请往下看! (如果你也看懂了,请帮忙点赞!)

mark

Nginx配置中的location、root、alias

location & root

初始配置

[root@adailinux vhost]# cat rio.conf 
server
{
    listen 80;
    server_name rio.com; 
    location /r/
    { 
    root /data/wwwroot/rio.com/;
    }
}

目录结构

[root@adailinux vhost]# tree /data/wwwroot/rio.com/
/data/wwwroot/rio.com/
├── file1.html
└── r
    ├── file2.html
    └── t
        └── file3.html

测试

mark

mark

mark

更改配置

[root@adailinux vhost]# cat rio.conf 
server
{
    listen 80;
    server_name rio.com; 
    location /r/
    { 
    root /data/wwwroot/rio.com/t/;
    }
}

[root@adailinux vhost]# /usr/local/nginx/sbin/nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@adailinux vhost]# /usr/local/nginx/sbin/nginx -s reload

测试:

mark

mark

mark

总结

location和root组合相当于在root指定目录下进行location匹配,location所匹配内容必须保证在root指定目录的子目录,否则配置无效,而且location只能向下匹配,不能匹配location指定目录上一级目录中的内容。

location & alias

初始配置

[root@adailinux vhost]# cat rio.conf 
server
{
    listen 80;
    server_name rio.com; 
    location /r/
    { 
    alias /data/wwwroot/rio.com/r/;
    }
}

测试

mark

mark

mark

更改配置

[root@adailinux vhost]# cat rio.conf 
server
{
    listen 80;
    server_name rio.com; 
    location /r/
    { 
    alias /data/wwwroot/rio.com/;
    }
}

[root@adailinux vhost]# /usr/local/nginx/sbin/nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@adailinux vhost]# /usr/local/nginx/sbin/nginx -s reload

测试

mark

mark

mark

总结

location与alias组合,需要保证location匹配目录与alias指定目录级别相同,否则配置无效,与location和root组合相同的是,location所匹配内容也只能向下匹配。

注意事项

  1. 使用alias,目录名后面一定要加“/”
  2. alias只能在location中使用

补充:root&alias文件路径配置

root/alias 是指定文件路径的两种方式,主要区别就是怎么解析location后面的uri。
eg: 访问:http://localhost/appImg/abc.jpg

  • root:
location ^~ /appImg/{
    root /home/nginx;
}

这个location相当于访问服务器上的文件路径: /home/nginx/appImg/abc.jpg 。

  • alias:
location ^~ /appImg/{
    alias /home/nginx/;
}

这个location相当于访问服务器上的文件目录:/home/nginx/abc.jpg(即alias不会使用location后面配置的路径)。而且如果alias 指定的是目录,后面一定要加上 "/"。。。

© 著作权归作者所有

阿dai学长
粉丝 75
博文 262
码字总数 336161
作品 0
朝阳
运维
私信 提问
Nginx 配置 root目录、虚拟目录alias

Nginx是通过 alias 设置虚拟目录,在Nginx的配置中,alias目录和root目录是有区别的。 alias指定的目录是准确的,即location匹配访问的path目录下的文件直接是在alias目录下查找的; root指定...

Yue_Chen
02/23
26
0
Nginx的 alias 与 root 的区别

nginx貌似没有虚拟目录的说法,因为它本来就是完完全全根据目录来设计并工作的。 如果非要给nginx安上一个虚拟目录的说法,那就只有alias标签比较“像”,干脆来说说alias标签和root标签的区...

山哥
2011/08/05
157
0
Nginx 配置静态文件 404 问题

使用Nginx做访问静态资源的时候,配置之后访问一直是 404。 我的配置是 location /dist { root /usr/local/nginx/html/dist; } 原因: root 配置的意思是,会在root配置的目录后跟上URL,组成...

Jack088
01/10
25
0
nginx虚拟目录(alias与root的区别)

nginx貌似没有虚拟目录的说法,因为它本来就是完完全全根据目录来设计并工作的。 如果非要给nginx安上一个虚拟目录的说法,那就只有alias标签比较“像”,干脆来说说alias标签和root标签的区...

李长春
2012/02/14
123
0
nginx中的root和alias区别

nginx貌似没有虚拟目录的说法,因为它本来就是完完全全根据目录来设计并工作的。 如果非要给nginx安上一个虚拟目录的说法,那就只有alias标签比较“像”,干脆来说说alias标签和root标签的区...

周云台
2018/04/01
18
0

没有更多内容

加载失败,请刷新页面

加载更多

总结

一、设计模式 简单工厂:一个简单而且比较杂的工厂,可以创建任何对象给你 复杂工厂:先创建一种基础类型的工厂接口,然后各自集成实现这个接口,但是每个工厂都是这个基础类的扩展分类,spr...

BobwithB
28分钟前
2
0
java内存模型

前言 Java作为一种面向对象的,跨平台语言,其对象、内存等一直是比较难的知识点。而且很多概念的名称看起来又那么相似,很多人会傻傻分不清楚。比如本文我们要讨论的JVM内存结构、Java内存模...

ls_cherish
31分钟前
2
0
友元函数强制转换

友元函数强制转换 p522

天王盖地虎626
昨天
5
0
js中实现页面跳转(返回前一页、后一页)

本文转载于:专业的前端网站➸js中实现页面跳转(返回前一页、后一页) 一:JS 重载页面,本地刷新,返回上一页 复制代码代码如下: <a href="javascript:history.go(-1)">返回上一页</a> <a h...

前端老手
昨天
5
0
JAVA 利用时间戳来判断TOKEN是否过期

import java.time.Instant;import java.time.LocalDateTime;import java.time.ZoneId;import java.time.ZoneOffset;import java.time.format.DateTimeFormatter;/** * @descri......

huangkejie
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部