Nginx 如何找到默认根目录

Posted

技术标签:

【中文标题】Nginx 如何找到默认根目录【英文标题】:how is Nginx finding default root 【发布时间】:2021-07-12 10:28:51 【问题描述】:

我刚刚使用brew 安装了nginx,其默认配置位于/usr/local/etc/nginx。默认conf文件中的服务器配置如下(只粘贴了一小部分)

server 
        listen       8080;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / 
            root   html;
            index  index.html index.htm;
        
...

提供index.html 的位置是/usr/local/var/www/。现在看上面的配置,不明白nginx是怎么去/usr/local/var/www/找默认文件的?是否有其他配置指示 nginx 查看该文件夹?

【问题讨论】:

【参考方案1】:
    如果root 指令的值是相对的,则使用nginx 前缀组成完整路径。详情请见that answer。 In the nginx Homebrew formula --prefix 设置为 Homebrew 前缀:
      --prefix=#prefix
    默认 Homebrew 前缀是 /usr/local on Intel。 因此,根是html/usr/local/html(nginx 前缀+相对路径)。 In the nginx Hombebrew formula这个位置符号链接到#HOMEBREW_PREFIX/var/www,也就是/usr/local/var/www
# nginx's docroot is #prefix/html, this isn't useful, so we symlink it
# to #HOMEBREW_PREFIX/var/www. The reason we symlink instead of patching
# is so the user can redirect it easily to something else if they choose.

【讨论】:

这么好的解释。【参考方案2】:

这样设置root html 使得 nginx 使用相对位置。 最简单的方法是用这样的完整路径编写根目录

root /var/www/html;

【讨论】:

以上是关于Nginx 如何找到默认根目录的主要内容,如果未能解决你的问题,请参考以下文章

如何修改linux登录后默认目录

如何在 nginx 中调试和查找子域的默认文档根目录?

nginx 根文档目录的子目录 为啥不能自动解析index.php

如何在Windows上配置并运行Nginx

nginx lua脚本 操作文件目录或者文件的默认路径的坑

window 下怎么配置nginx环境变量