资讯专栏INFORMATION COLUMN

nginx关于root与alias的区别

April / 536人阅读

摘要:而我不想把访问的加入到路径中。所以就需要使用属性,其会抛弃,直接访问指定的位置参考

结论

配置demo:

location xxx {
    root yyy
}

浏览器访问 xxx,实际访问的是 yyy/xxx
浏览器访问 xxx/abc.html,实际访问的是 yyy/xxx/abc.html
浏览器访问 xxx/ccc/abc.html,实际访问的是 yyy/xxx/ccc/abc.html

结论: root属性,会把root的值(这里是yyy)加入到访问路径(locaition)之前

配置demo:

locaiton xxx {
    # alias必须以 / 结束,否则无效
    alias yyy/ 
}

浏览器访问 xxx,实际访问的是 yyy
浏览器访问 xxx/abc.html,实际访问的是 yyy/abc.html
浏览器访问 xxx/ccc/abc.html,实际访问的是 yyy/ccc/abc.html

结论:alias属性,会把alias的值(这里是yyy)替代访问路径匹配的部分(这里是xxx)
示例

nginx的目录结构如下:

nginx/
    -html/
        -index.html
    -logs/
        - access.log
    -conf/
        -nginx.conf

1) 这种配置,http://localhost:8086/access.log,能看到 nginx/logs/access.log,但就别指望能访问 html目录下的文档了

server {
    listen       8086;
    server_name  localhost;
    location / {
        root   logs;
    }
}

2) 这种配置,访问 http://localhost:8086/log/access.log,能看到 nginx/logs/access.log;
访问 http://localhost:8086/, 能看到 nginx/html/index.html

server {
    listen       8086;
    server_name  localhost;
    location / {
        root   html;
        index  index.html index.htm;
    }
    # 配置成 location /log/ 或 location /log 都可以
    location /log/ {
        # 不能写成logs, 必须已 / 结束
        alias logs/;
        # 以下配置没用也可以,只是方便你输入 localhost:8086/log/ 后能,看到nginx/logs/目录下的所有文件
        autoindex on;
    }
}

3) 这种配置,访问 http://localhost:8086/logs/access.log,能看到 nginx/logs/access.log;
访问 http://localhost:8086/, 能看到 nginx/html/index.html

server {
    listen       8086;
    server_name  localhost;
    # http://localhost:8086/ 访问的是
    # nginx/html/  (然后会自动显示 index.html 或 index.htm,如果存在这两个文件之一)
    # 啰嗦的注释: nginx/html(html是root的值)/(/是location的值)
    location / {
        root   html;
        index  index.html index.htm;
    }
    # http://localhost:8086/logs/ 访问的是
    # nginx/./logs/
    # .是root的值,logs是location的值
    # 请与第4种错误配置进行比较,深入理解root属性
    location /logs/ {
        # 写成./也可以
        root .;
    }
}

4) 错误的配置

server {
    listen       8086;
    server_name  localhost;
    location / {
        root   html;
        index  index.html index.htm;
    }
    # 这样子配置是错的, 请与第三种配置比较一下
    # 关键点:root属性会把root的值加入到最终路径之前
    # 即: http://localhost:8086/logs/access.log访问的是:
    # nginx/logs/logs/access.log
    # 因为: nginx/logs(root的值)/logs(locaition的值)/access.log,
    location /logs/ {
        root /logs/;
    }
}

节选:https://www.cnblogs.com/zhang... 这段话:
root属性指定的值是要加入到最终路径的,所以访问的位置变成了 root的值/locaiton的值。而我不想把访问的URI加入到路径中。所以就需要使用alias属性,其会抛弃URI,直接访问alias指定的位置

参考:
https://www.cnblogs.com/zhang...
https://www.cnblogs.com/kevin...

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/39978.html

相关文章

  • 在开发环境下使用nginx重写uri及代理功能

    摘要:本文同步在个人博客上,欢迎关注这篇文章整理了在前端开发中,在开发环境下使用重写及代理功能的方法。表示该规则是使用正则定义的,区分大小写。因此牢记在上下文中使用,而在上下文中使用。 本文同步在个人博客shymean.com上,欢迎关注 这篇文章整理了在前端开发中,在开发环境下使用nginx重写uri及代理功能的方法。 参考 nginx中文文档 前端开发者必备的 Nginx 知识 Ngin...

    LMou 评论0 收藏0
  • Nginx 虚拟目录(root alias)区别

    摘要:虚拟目录与的区别出现场景有如下前端目录结构真正的目录应为目录访问路径之前错误的配置如下按照如上的配置可以匹配到配置节但是我的目录是,访问会去下找目录都报这个是在预料之中的。 Nginx 虚拟目录(root 与 alias)的区别 出现场景 有如下前端目录结构 front -common -dist -doc -node_moduels -package.json ...

    894974231 评论0 收藏0
  • Nginx 虚拟目录(root alias)区别

    摘要:虚拟目录与的区别出现场景有如下前端目录结构真正的目录应为目录访问路径之前错误的配置如下按照如上的配置可以匹配到配置节但是我的目录是,访问会去下找目录都报这个是在预料之中的。 Nginx 虚拟目录(root 与 alias)的区别 出现场景 有如下前端目录结构 front -common -dist -doc -node_moduels -package.json ...

    frank_fun 评论0 收藏0
  • nginx rootalias 配置区别

    摘要:与主要区别在于如何解释后面的,这会使两者分别以不同的方式将请求映射到服务器文件上。会把后面配置的路径丢弃掉,把当前匹配到的目录指向到指定的目录。在使用正则匹配时,必须捕捉要匹配的内容并在指定的内容处使用。 nginx指定文件路径有两种方式root和alias,这两者的用法区别,使用方法总结了下,方便大家在应用过程中,快速响应。root与alias主要区别在于nginx如何解释locat...

    liujs 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<