Nginx 是如何找到默认根目录的

how is Nginx finding default root

我刚刚使用 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 查看该文件夹?

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

root /var/www/html;

  1. 如有取值root directive is relative, the full path is composed using the nginx prefix. See that answer详谈。
  2. In the nginx Homebrew formula --prefix 设置为 Homebrew 前缀:
      --prefix=#{prefix}
  1. 默认的 Homebrew 前缀是 /usr/local on Intel.
  2. 因此,root是html/usr/local/html(nginx前缀+相对路径)。
  3. 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.