nginx中root和alias指令的使用

 更新时间:2024年08月17日 09:40:16   作者:临江仙我亦是行人  
这篇文章主要介绍了nginx中root和alias指令的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

1.基本信息

功能均为将url映射为文件路径,返回静态文件内容

格式:

alias path
root path

2.区别

  • root会映射完整url,会将location匹配的部分,追加到path后面,即,root指定web的家目录,在定义location的时候,文件的绝对路径等于 root+location
  • alias:定义路径别名,会把访问的路径重新定义到其指定的路径,文档映射的另一种机制
  • alias会出现在location上下文中,root可以出现在http,server,location,if in location
  • alias无默认值,root默认值为root html

3.示例

[root@centos8 conf.d]#cat /apps/nginx/conf.d/root_alias.conf
server {
    server_name path.test.com;
    root /data/nginx;
    error_log logs/myerror.log info;
    location /root {
        root /data/nginx/html;   # root指令会将 location 中的 /root 追加到 /data/nginx/html 路径后面,所以路径是:/data/nginx/html/root
    }

    location /alias {
        alias /data/nginx/html;   # alias指令会使用 /data/nginx/html 替换掉 location 中定义的 /alias 路径
    }

    location ~ /root/(\w+\.txt) {
        root /data/nginx/html/first/$1;  # 实际访问的是 /data/nginx/html/first/1.txt/root/1.txt
    }

    location ~ /alias/(\w+\.txt){
        alias /data/nginx/html/first/$1;  # alias指令会使用 /data/nginx/html/first/$1 替换掉 /alias/(\w+\.txt)
    }

    location /RealPath/ {
        alias /data/nginx/html/realpath/;
        return 200 '$request_filename:$document_root:$realpath_root\n';
    }
}
[root@centos8 conf.d]#

# 配置验证
[root@centos8 conf.d]#nginx -t
nginx: the configuration file /apps/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /apps/nginx/conf/nginx.conf test is successful
[root@centos8 conf.d]#
[root@centos8 conf.d]#nginx -s reload
[root@centos8 conf.d]#mkdir /data/nginx/html/first -pv
mkdir: created directory '/data/nginx/html'
mkdir: created directory '/data/nginx/html/first'
[root@centos8 conf.d]#echo "This index.html test page" > /data/nginx/html/index.html
[root@centos8 conf.d]#echo "This is a 1.txt" > /data/nginx/html/first/1.txt
[root@centos8 conf.d]#cat /data/nginx/html/first/1.txt
This is a 1.txt
[root@centos8 conf.d]#cat /data/nginx/html/index.html
This index.html test page

测试1

[root@centos8 conf.d]#curl path.test.com/root/
<html>
<head><title>404 Not Found</title></head>
<body>
<center><h1>404 Not Found</h1></center>
<hr><center>nginx/1.18.0</center>
</body>
</html>
[root@centos8 conf.d]#


# 与第一个匹配 location /root
# 因为是root指令,所以/data/nginx/html后面又加上了location中的root.因为后面有反斜杠,所以加上了index.html
# 所以实际访问的是 /data/nginx/html/root/index.html,而这个路径是不存在的

测试2

[root@centos8 conf.d]#curl path.test.com/root/1.txt
<html>
<head><title>404 Not Found</title></head>
<body>
<center><h1>404 Not Found</h1></center>
<hr><center>nginx/1.18.0</center>
</body>
</html>
[root@centos8 conf.d]#

# 与location ~ /root/(\w+\.txt) 匹配
# 因为是root指令,会在/data/nginx/html/first/1.txt,后面加上匹配到的root/1.txt
# 实际访问的地址
/data/nginx/html/first/1.txt/root/1.txt,而这个路径也是不存在的

测试3

[root@centos8 conf.d]#curl path.test.com/alias/
This index.html test page
[root@centos8 conf.d]#

# 匹配到了 location /alias 这个匹配项
# alias 指令会使用 /data/nginx/html 替换掉 /alias,所以 访问了 /data/nginx/html/index.html 得到了默认的首页

测试4

[root@centos8 conf.d]#curl path.test.com/alias/1.txt
This is a 1.txt
[root@centos8 conf.d]#

# 匹配到了 location ~ /alias/(\w+\.txt)这个匹配项
# alias 指令会使用 /data/nginx/html/first/$1 替换掉 /alias/1.txt,所以访问到了/data/nginx/html/first/1.txt

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • nginx访问控制的两种方法

    nginx访问控制的两种方法

    这篇文章主要介绍了关于nginx访问控制的两种方法,一种是基于Basic Auth认证,另一种是基于IP的访问控制,文中介绍的非常详细,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-03-03
  • Nginx优化设计方案小结

    Nginx优化设计方案小结

    本文主要介绍了Nginx优化设计方案小结,帮助大家在nginx的使用和优化中提供一个参考的方向,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-05-05
  • Nginx本地配置SSL访问的实例教程

    Nginx本地配置SSL访问的实例教程

    当一个项目部署测试服后会遇到跨域、SSL证书、访问静态文件等各种问题,这个时候我们就可以采用Nginx来解决上述的问题,下面这篇文章主要给大家介绍了关于Nginx本地配置SSL访问的相关资料,需要的朋友可以参考下
    2022-05-05
  • Nginx配置文件(nginx.conf)配置详解(总结)

    Nginx配置文件(nginx.conf)配置详解(总结)

    本篇文章主要介绍了Nginx配置文件(nginx.conf)配置详解,这对初学者有一定的参考价值,有兴趣的可以了解一下。
    2016-12-12
  • nginx centos 服务开机启动设置实例详解

    nginx centos 服务开机启动设置实例详解

    这篇文章主要介绍了nginx centos 服务开机启动设置实例详解的相关资料,这里对服务开机启动做了详细的步骤介绍,需要的朋友可以参考下
    2016-11-11
  • 服务器使用Nginx部署Springboot项目的详细教程(jar包)

    服务器使用Nginx部署Springboot项目的详细教程(jar包)

    这篇文章主要介绍了服务器使用Nginx部署Springboot项目的详细教程(jar包),本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-07-07
  • nginx网站服务如何配置防盗链(推荐)

    nginx网站服务如何配置防盗链(推荐)

    这篇文章主要介绍了nginx网站服务如何配置防盗链,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-01-01
  • Nginx反向代理转发tomcat的实现

    Nginx反向代理转发tomcat的实现

    本文主要介绍了Nginx反向代理转发tomcat的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07
  • windows系统安装配置nginx环境

    windows系统安装配置nginx环境

    这篇文章介绍了windows系统安装配置nginx环境的方法,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-06-06
  • nginx上传文件大小报错500的解决办法

    nginx上传文件大小报错500的解决办法

    这篇文章主要介绍了nginx上传文件大小报错解决办法的相关资料,小文件可以提交,大文件会报500内部错误,这里提供解决办法,需要的朋友可以参考下
    2017-08-08

最新评论