暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Nginx中root和alias的区别

运维DevOps 2023-08-08
74

Nginx在配置访问静态页面的时候,经常使用root和alias两种方式,这两种方式区别如下:

  • 如果使用root指定,那么url的请求路径是要加入到root指定的路径中

  • 如果使用alias指定,那么请求的url路径不需要加入到alias指定的路径中,但是alias指定的路径结尾一定要加”/”


alias用法举例

1、下面在Nginx配置文件中定义路由,group后面有”/”,并通过alias指定,如图:

创建html目录,并定义文件index.html的内容,如下:

    mkdir -p data/html
    echo "hello, I am an nginx static file" > index.html

    此时通过IP地址访问,可以看到已经访问成功,请求结果并没加入alias路径中,如图:

    2、修改上面的路由,将group后面的”/”去掉,如图:

    再次请求,可以发现对结果并不影响,如图:

    因此,无论group后面有没有”/”,或者定义为/group/abc/def,对结果都没有影响,因为请求的路由不会加入到alias指定路径中

    3、修改上述路由,添加一个abcd.html,并在/data/html下追加文件abcd.html,内容如下:

      echo "hello, My name is abcd, I am an file" > abcd.html

      此时通过Nginx来访问,默认还是访问到/data/html/index.html,如果要想访问到abcd.html,那么就需要将index.html删除,我们这里将index.html改为index.html.bak,然后再次请求,如图:

      4、路由文件配置不变,在/data/html下新增目录abcd/def,以及index.html,如图:

      在路由后加上新增的路径来请求,可以看到能请求到内容,如图:

      注意:alias只能用于指定目录,不能指定文件,否则请求会报错

      root用法举例

      1、修改上述配置文件,将alias改为root,如果直接访问将会报错,如图:

      上面我们说过使用root指定路径后,location中的路由是会加入到路径中的,因此,我们在/data/html目录下创建group目录,并在group中定义index.html,内容如下:

        hello, I am an nginx static file, in group

        重新加载配置文件后,访问结果如图:

        2、修改上面的路由,增加abcd.html,如图:

        此时请求的时候实际是将/group/abcd.html追加到root路径后的,因此需要在group中创建abcd.html文件,内容为:

          hello, My name is abcd.html, in group

          再次通过浏览器请求,可以获取到内容,如图:

          上面几个简单例子就是root和alias的用法,大家可根据实际情况灵活变通即可

          注意:root或者alias指定路径最好不要是/tmp目录下的,否则可能因为权限问题无法访问

          文章转载自运维DevOps,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

          评论