Nginx 中 alias 和 root 的区别

一、语法说明
  • alias

    • 采用 alias 配置的资源目录必须是准确的。localtion 正则匹配到 path 后,直接在 alias 定义的目录下查找。

    • 采用 alias 标签配置资源路径的 localtion 块中不能使用 rewritebreak

    • 采用 alias 标签配置的资源目录后面必须要加上 / 符号。

  • root

    • 采用 root 配置资源目录,实际资源目录必须设置为 localtion 正则匹配的 path 关键字的上一级目录。

    • 这个 path 正则匹配的关键字也必须是 root 后面定义路径中真实存在的资源目录,因为 localtion 正则匹配到 path 后,根据 root 再带上 path 本身资源路径名称去查找资源。

P.S

  • 采用 alias 配置的资源目录,localtion 正则匹配的 path 关键字后面不带 / 符号,那么请求访问这个 pathurl 地址中带不带 / 都不会影响访问,因为此机制在访问的时候, Nginx 会自动加上 /

  • 采用 alias 配置的资源目录,localtion 正则匹配的 path 关键字后面带上 / 符号,那么请求访问这个 pathurl 地址中必须带上 /,因为此机制 Nginx 不会自动加上 /,如果不手动加上 / ,那么在访问的时候就会出现 404所以建议 localtion 正则匹配的 path 关键字后面不带 / 符号,要求alias 标签配置的资源目录后面必须要加上 / 符号

  • 采用 root 配置的资源目录,localtion 正则匹配的 path 后面带不带 / 都不会影响访问

二、试验论证
  1. 前置约定

    假设 Nginx 配置的域名为 www.rambo123.com

  2. 资源目录文件夹的名称和 path 一致

    示例一

    location /shop/ {
        alias /opt/web/shop/;
        index  index.html index.htm;
    }
    

    以上通过 alias 配置资源目录,访问 www.rambo123.com/shop/index.html 实际指定的是 /opt/web/shop/index.html

    P.S

    alias 指定的资源目录后面必须要加上 / ,否则无法访问

    示例二

    采用 root 改造示例一

    localtion /shop/ {
        root /opt/web/;
        index  index.html index.htm;
    }
    

    以上通过 root 改造示例一的配置以后,达到的访问效果一致。通过 root 配置资源目录,访问 www.rambo123.com/shop/index.html 实际指定的是 /opt/web/shop/index.html

  3. 资源目录文件夹的名称和 path 不一致

    示例三

    localtion /web/ {
        alias /opt/www/html/;
        index  index.html index.htm;
    }
    

    以上通过 alias 配置资源目录,访问 www.rambo123.com/web/index.html 实际指定的是 /opt/www/html/index.html

    示例四

    采用 root 改造示例三

    如果非要采用 root 指定资源的方式来改造示例三,就只能通过软连的方式来实现

    # 为 html 创建软链接(保持 /opt/www/html 与 /opt/www/web 内容一致)
    ln -s /opt/www/web /opt/www/html 
    
    # 在进行 root 的配置
    lcation /web/ {
        root /opt/www/;
        index index.html index.htm;
    }
    
三、经验总结
  • localtion / 中配置 root 目录

  • location /path 中配置 alias 虚拟目录

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值