首页 > nginx > nginx的location、root、alias指令用法和区别

nginx的location、root、alias指令用法和区别

2017年4月4日 发表评论 阅读评论

nginx指定文件路径有两种方式root和alias,指令的使用方法和作用域:
[root]
语法:root path
默认值:root html
配置段:http、server、location、if
[alias]
语法:alias path
配置段:location

root与alias主要区别在于nginx如何解释location后面的uri,这会使两者分别以不同的方式将请求映射到服务器文件上。
root的处理结果是:root路径+location路径
alias的处理结果是:使用alias路径替换location路径
alias是一个目录别名的定义,root则是最上层目录的定义。
还有一个重要的区别是alias后面必须要用“/”结束,否则会找不到文件的。。。而root则可有可无~~

root实例:

如果一个请求的URI是/t/a.html时,web服务器将会返回服务器上的/www/root/html/t/a.html的文件。

alias实例:

如果一个请求的URI是/t/a.html时,web服务器将会返回服务器上的/www/root/html/new_t/a.html的文件。注意这里是new_t,因为alias会把location后面配置的路径丢弃掉,把当前匹配到的目录指向到指定的目录。

注意:
1. 使用alias时,目录名后面一定要加"/"。
3. alias在使用正则匹配时,必须捕捉要匹配的内容并在指定的内容处使用。
4. alias只能位于location块中。(root可以不放在location中)

分类: nginx 标签:
  1. mood
    2022年2月9日10:21 | #1
  2. mood
    2020年9月21日21:37 | #2

    @ puffbaby
    m站 web站分开写server,各自写各自的路径。

  3. puffbaby
    2019年11月29日09:59 | #3

    站长,如果是tp5开发的www和m站,统一的web目录是public。然后两个网站都要做robots.txt。
    规则怎么写?似乎这样不行:
    location /robots.txt {
    alias /wwwroot/demo.cn/public/m/; #这个是M网站的conf文件配置
    }

    location /robots.txt {
    alias /wwwroot/demo.cn/public/pc/; #这个是WWW网站的conf文件配置
    }

  4. 阿拉1994
    2019年9月19日06:50 | #4

    @Noah
    哈哈,https只是表示启用了ssl而已,通常默认的端口是443,比如https://test.com,我们就通过443端口建立https连接,如果是https://test.com:8888,这里我们就通过8888端口建立https连接。

  5. Noah
    2019年8月3日10:13 | #5

    @jupyter用户
    https意思就是使用443端口,就和http使用的是80端口一样,你这转到443端口的8888端口,明显是不对的

  6. 2019年6月19日15:14 | #6

    使用alias时,目录名后面一定要加"/"。

    这个说法不对。

    alias别名用于location路劲的完全替换。

    alias目录后面带不带/ 需要跟location保持一致就可以。

    譬如:
    location /t {
    alias /www/root/html/new_t;
    }

  7. jupyter用户
    2019年6月15日20:57 | #7

    重定向时怎么让浏览器转入正确的位置?
    比如,我有一个jupyter在localhost:8888, 于是我设置 location /jupyterserver1/ 位置为 proxy_pass https://localhost:8888/. 此时, 浏览器访问 https://localhost/jupyterserver1/ 会被自动转到 https://localhost/lab, 而不是 localhost/jupyterserver1/lab,此时 nginx 返回404

  8. ForeverLove
    2019年4月18日18:47 | #9

    学到了。一天之内使用搜索引擎搜索了两个问题都看到了你写的文章,觉得很奇妙

  9. ZERO SHENGZHONG XIE
    2018年4月2日13:55 | #10

    @shuiqiang
    官方文檔 ( ALIAS )沒有 (加或不加) SLASH 的警語,
    博主的資料,有參考什麼文獻嗎?

  10. shuiqiang
    2018年3月21日15:23 | #11

    好像不对吧,我在nginx官方文档看到alias后面可以不加/的

  11. 2017年8月10日15:52 | #12

    博主,能否转载到我的博客收藏?

  12. 2017年8月10日15:51 | #14

    学习用Ngnix做图片服务器,遇到root和alias问题。学习了。

  13. 2017年6月7日12:02 | #15

    装个反垃圾插件吧,评论区全是垃圾评论

  14. 2017年4月7日15:40 | #16

    学习了,nginx真的很强大

  1. 2018年12月12日23:15 | #1
  2. 2020年5月22日17:44 | #2
  3. 2020年9月20日19:42 | #3