352

我以前使用过 Apache,所以我知道默认的公共 Web 根目录通常是/var/www/.

我最近开始使用 nginx,但似乎找不到默认的公共 Web 根目录。

我在哪里可以找到 nginx 的默认公共 Web 根目录?

4

31 回答 31

489

如果使用 apt-get 在 Ubuntu 上安装,请尝试/usr/share/nginx/www.

编辑:

在更新的版本中,路径已更改为: /usr/share/nginx/html

2019年编辑:

也可以试试/var/www/html/index.nginx-debian.html

于 2013-01-07T14:04:33.693 回答
187

如果您的配置不包含root /some/absolute/path;语句,或者它包含使用相对路径(如)的语句,root some/relative/path;则生成的路径取决于编译时选项。

如果您自己下载并编译了源代码,那么可能是唯一能让您对这对您意味着什么做出有根据的猜测的情况。在这种情况下,路径将与--prefix所使用的内容相关。如果您没有更改它,则默认为/usr/local/nginx. 你可以找到参数 nginx 是用 via 编译的nginx -V,它--prefix列为第一个。

由于root指令默认为html,因此这当然会/usr/local/nginx/html成为您问题的答案。

但是,如果您以任何其他方式安装 nginx,那么所有的赌注都将失败。您的发行版可能使用完全不同的默认路径。学习弄清楚你的选择分布使用什么样的默认值完全是另一项任务。

于 2012-06-20T20:59:38.340 回答
75

Debian 上的默认 Nginx 目录是/var/www/nginx-default.

您可以检查文件:/etc/nginx/sites-enabled/default

并找到

server {
        listen   80 default;
        server_name  localhost;

        access_log  /var/log/nginx/localhost.access.log;

        location / {
                root   /var/www/nginx-default;
                index  index.html index.htm;
        }

根是默认位置。

于 2013-08-27T14:42:48.883 回答
47

'default public web root' 可以从 nginx -V 输出中找到:

nginx -V
nginx version: nginx/1.10.1
built with OpenSSL 1.0.2h  3 May 2016
TLS SNI support enabled
configure arguments: --prefix=/var/lib/nginx --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --pid-path=/run/nginx/nginx.pid --lock-path=/run/nginx/nginx.lock --http-client-body-temp-path=/var/lib/nginx/tmp/client_body --http-proxy-temp-path=/var/lib/nginx/tmp/proxy --http-fastcgi-temp-path=/var/lib/nginx/tmp/fastcgi --http-uwsgi-temp-path=/var/lib/nginx/tmp/uwsgi --http-scgi-temp-path=/var/lib/nginx/tmp/scgi --user=nginx --group=nginx --with-ipv6 --with-file-aio --with-pcre-jit --with-http_dav_module --with-http_ssl_module --with-http_stub_status_module --with-http_gzip_static_module --with-http_v2_module --with-http_auth_request_module --with-mail --with-mail_ssl_module

--prefix 值是问题的答案。对于根目录上方的示例是 /var/lib/nginx

于 2016-09-05T17:06:49.343 回答
29

对于 Ubuntu 和 docker 映像:

/usr/share/nginx/html/

于 2018-01-29T20:18:27.760 回答
25

在 Mac OS X 上,使用 brew 安装 nginx 会生成默认目录:

/usr/local/var/www

所以:

root html

方法

root /usr/local/var/www/html

没有 html 目录,因此必须手动创建。

于 2015-09-09T22:45:54.217 回答
22

正如这里的大多数用户所说,它在这条路径下:

/usr/share/nginx/html

这是默认路径,但您可以创建自己的路径。

您所需要的只是在 Web 服务器根树中创建一个并赋予它一些权限“不是 0777”,并且仅对一个用户且仅对该用户可见,但自路径结束以来,每个人都可以看到路径的结尾是您的文件和文件夹将被公众查看的内容。

例如,您可以像这样制作:

home_web/site1/public_html/www/

每当您在 Nginx 中创建虚拟主机时,您都可以自定义自己的根路径,只需在您的服务器块中添加如下内容:

 server {
    listen  80;
        server_name  yoursite.com;

root /home_web/site1/public_html/www/;
}
于 2014-03-18T15:20:46.960 回答
21

您可以简单地将nginx 的根文件夹映射到您网站的位置:

nano /etc/nginx/sites-enabled/default

默认文件中,在服务器标签中查找根目录并更改您网站的默认文件夹,例如我的网站位于/var/www

server {
        listen 80 default_server;
        listen [::]:80 default_server ipv6only=on;

        root /var/www; <-- Here!
...

当我评估 nginx、apache2 和 lighttpd 时,我将它们全部映射到位于/var/www的网站。我发现这是有效评估的最佳方式。

然后您可以启动/停止您选择的服务器,看看哪个性能最好。

例如

service apache2 stop
service nginx start

顺便说一句,nginx 实际上非常快!

于 2014-09-01T11:24:37.357 回答
14

查看 nginx 配置文件以确定。此命令对您机器上配置的任何内容进行 greps:

cat /etc/nginx/sites-enabled/default |grep "root"

在我的机器上是:root /usr/share/nginx/www;

于 2015-01-02T10:53:52.523 回答
11

nginx 的默认 web 文件夹取决于您的安装方式,但通常位于以下位置:

/usr/local/nginx/html
/usr/nginx/html
于 2012-05-20T16:05:25.950 回答
11

转储配置:

$ nginx -T
...
server {
    ...
    location / {
        root   /usr/share/nginx/html;
        ...
    }
    ...
}

您得到的可能会有所不同,因为它取决于您nginx的配置/安装方式。

参考:

更新:如果/何时将-T选项添加到nginx. vl-homutov于 2015 年 6 月 16 日在手册页中记录了它,该手册已成为v1.9.2 版本的一部分。甚至在发行说明中也提到过。-T此后的每个版本中都存在该选项nginx,包括 Ubuntu 16.04.1 LTS 上可用的选项:

root@23cc8e58640e:/# nginx -h    
nginx version: nginx/1.10.0 (Ubuntu)
Usage: nginx [-?hvVtTq] [-s signal] [-c filename] [-p prefix] [-g directives]

Options:
  -?,-h         : this help
  -v            : show version and exit
  -V            : show version and configure options then exit
  -t            : test configuration and exit
  -T            : test configuration, dump it and exit
  -q            : suppress non-error messages during configuration testing
  -s signal     : send signal to a master process: stop, quit, reopen, reload
  -p prefix     : set prefix path (default: /usr/share/nginx/)
  -c filename   : set configuration file (default: /etc/nginx/nginx.conf)
  -g directives : set global directives out of configuration file
于 2015-09-09T19:35:32.133 回答
11

运行命令 nginx -V 并查找--prefix. 使用该条目来定位您的默认路径。

于 2016-04-07T14:59:44.853 回答
9

在 Mac 上使用 brew 安装 nginx:

/usr/local/etc/nginx/nginx.conf

location / { 
    root   html;  # **means /usr/local/Cellar/nginx/1.8.0/html and it soft linked to /usr/local/var/www**
    index  index.html;
}  
于 2015-12-25T02:25:15.510 回答
9

对于 CentOS、Ubuntu 和 Fedora,默认目录是/usr/share/nginx/html

于 2017-12-15T14:53:05.583 回答
7

对于 AWS EC2 Linux,您可以在此处找到:

/usr/share/nginx
于 2016-11-24T06:58:58.637 回答
5

请注意,nginx 服务器的默认索引页面也将显示根位置。从 Amazon Linux AMI 上的 nginx (1.4.3),您将获得以下信息:

这是在 Amazon Linux AMI 上随 nginx 分发的默认 index.html 页面。它位于 /usr/share/nginx/html。

您现在应该将您的内容放在您选择的位置,并在 nginx 配置文件 /etc/nginx/nginx.conf 中编辑根配置指令

于 2014-02-05T12:01:58.430 回答
5

就我而言,它在/usr/share/nginx/html

您可以尝试通过执行搜索来查找

find / -name html
于 2015-09-04T01:44:37.660 回答
5

如果您使用的是 Ubuntu 14.04,您可以在以下路径找到 nginx www 目录:

yusuf@yusuf-he:/usr/share/nginx/html$ pwd
/usr/share/nginx/html
yusuf@yusuf-he:/usr/share/nginx/html$
于 2017-01-01T12:44:37.080 回答
5

您可以搜索它,无论他们将它移动到哪里(系统管理员移动或更新版本的 nginx)

查找 / -name nginx

于 2018-06-15T04:48:35.710 回答
4

你可以访问文件配置 nginx,你可以看到 root /path。在这个默认的 nginx apache 中/var/www/html

于 2017-03-11T02:36:26.897 回答
4

如果您需要找出在编译时定义的 nginx 公共根文件夹,您可以检查您的 access.log 文件。

  1. 打开nginx.conf
  2. 找到log_format指令
  3. log_format的值是一个模板字符串,用于将信息写入access.log文件。您可以将$document_root变量添加到此模板字符串,以将默认 www 根位置记录到文件中。

这是nginx.conf的 http 部分的示例,其中修改了 log_format指令,在字符串的开头添加了 $document_root:

    http {
        include       /etc/nginx/mime.types;
        default_type  application/octet-stream;

                  ## ADD $document_root HERE ##
        log_format  main  '$document_root $remote_addr - $remote_user [$time_local] "$request" '
                          '$status $body_bytes_sent "$http_referer" '
                          '"$http_user_agent" "$http_x_forwarded_for"';

        access_log  /var/log/nginx/access.log  main;

        etc. .......
  1. 然后备份 conf.d 目录中的所有配置文件 *.conf 并在那里创建配置文件test.conf,其中包含以下几行:

    server{
        listen 80;
        server_name localhost;
    }
    
    1. 将以下行添加到 /etc/hosts 文件:127.0.0.1 localhost

    2. 重新加载 nginx 配置:nginx -s reload

    3. 向http://localhost发送 GET 请求:curl http://localhost

    4. 检查access.log的最后一个字符串:tail -n 1 /var/log/nginx/access.log

这是此命令的示例输出,其中/etc/nginx/html是在编译时定义的默认文档根目录:

    /etc/nginx/html 127.0.0.1 - - [15/Mar/2017:17:12:25 +0200] "GET / HTTP/1.1" 404 169 "-" "curl/7.35.0" "-"
于 2017-03-15T16:18:15.820 回答
4

*默认页面 web 分配在 var/www/html *默认配置服务器 etc/nginx/sites/avaliable/nginx.conf

server {

    listen 80 default_server;
    listen [::]:80 default_server;

    root /var/www/html;

    index index.html index.php;

    server_name _;

    location /data/ {
        autoindex on;
    }

    location /Maxtor {
        root /media/odroid/;
        autoindex on;

    }

        # This option is important for using PHP.
    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;
    }
}

*默认配置服务器 etc/nginx/nginx.conf

内容..

user www-data;
worker_processes 8;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;

events {
    worker_connections 768;
    # multi_accept on;
}

http {

    ##
    # Basic Settings
    ##

    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_timeout 65;
    types_hash_max_size 2048;
    # server_tokens off;

    # server_names_hash_bucket_size 64;
    # server_name_in_redirect off;

    include /etc/nginx/mime.types;
    default_type application/octet-stream;

    ##
    # SSL Settings
    ##

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
    ssl_prefer_server_ciphers on;

    ##
    # Logging Settings
    ##

    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;

    ##
    # Gzip Settings
    ##

    gzip on;

    # gzip_vary on;
    # gzip_proxied any;
    # gzip_comp_level 6;
    # gzip_buffers 16 8k;
    # gzip_http_version 1.1;
    # gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

    ##
    # Virtual Host Configs
    ##

    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;
}


#mail {
#   # See sample authentication script at:
#   # http://wiki.nginx.org/ImapAuthenticateWithApachePhpScript
# 
#   # auth_http localhost/auth.php;
#   # pop3_capabilities "TOP" "USER";
#   # imap_capabilities "IMAP4rev1" "UIDPLUS";
# 
#   server {
#       listen     localhost:110;
#       protocol   pop3;
#       proxy      on;
#   }
# 
#   server {
#       listen     localhost:143;
#       protocol   imap;
#       proxy      on;
#   }
#}

带有 ip 客户端的默认访问日志 var/log/nginx/...

于 2019-07-16T18:22:54.697 回答
3

我在 Ubuntu 上的 nginx 是“nginx 版本:nginx/1.9.12 (Ubuntu)”,根路径是 /var/www/html/

Ubuntu 信息是:没有可用的 LSB 模块。发行商 ID:Ubuntu 描述:Ubuntu 16.04 LTS 版本:16.04 代号:xenial

实际上,如果你刚刚在 Ubuntu 上安装了 nginx,那么你可以去“/etc/nginx/sites-available”查看默认文件,有一个类似“root /web/root/path/goes/here”的配置。这就是你要找的。

于 2016-10-19T09:00:14.773 回答
3

在 Ubuntu 中,Nginx 默认的根目录位置是/usr/share/nginx/html

于 2018-04-13T06:29:02.470 回答
3

您可以在 /var/www/ 中找到它,这是 nginx 和 apache 的默认目录,但您可以更改它。步骤 1 转到以下文件夹 /etc/nginx/sites-available

第 2 步编辑默认文件,您可以在其中找到一个服务器块,在该块下将有一个名为 root 的行,它定义了该位置。

于 2018-07-06T09:14:03.933 回答
3

在 ubuntu 19.04 中,我们在

/usr/share/nginx/html

于 2019-03-14T06:01:10.383 回答
2

对于 nginx/1.4.6 (Ubuntu)

/etc/nginx$ cat /etc/nginx/sites-available/default | grep -i root
- root /usr/share/nginx/html;
于 2016-12-22T02:19:24.273 回答
2

我在使用 nginx 运行 WordPress 网站的 Digital Ocean 上也遇到了这个问题。

我的解决方案是执行以下操作:

  1. 使用以下内容修改/etc/nginx/nginx.conf文件:
server {
root /var/www/html;
}

然后我不得不sudo service nginx restart

nginx -V命令还向您显示您的 nginx 配置文件的位置(我的被指向/etc/nginx/nginx.conf

于 2019-04-12T16:30:09.107 回答
1

默认与编译nginx时脚本的prefix选项有关;configure这是来自 Debian 的一些奇怪示例:

% nginx -V | & tr ' ' "\n" | fgrep -e path -e prefix
--prefix=/etc/nginx
--conf-path=/etc/nginx/nginx.conf
--error-log-path=/var/log/nginx/error.log
--http-client-body-temp-path=/var/lib/nginx/body
--http-fastcgi-temp-path=/var/lib/nginx/fastcgi
--http-log-path=/var/log/nginx/access.log
--http-proxy-temp-path=/var/lib/nginx/proxy
--http-scgi-temp-path=/var/lib/nginx/scgi
--http-uwsgi-temp-path=/var/lib/nginx/uwsgi
--lock-path=/var/lock/nginx.lock
--pid-path=/var/run/nginx.pid

随后,将默认值root设置html目录(根据指令的文档root),该目录恰好位于 内prefix,可以通过查看$document_root简单配置文件中的变量来验证:

# printf 'server{listen 4867;return 200 $document_root\\n;}\n' \
    >/etc/nginx/conf.d/so.10674867.conf

# nginx -s reload && curl localhost:4867
/etc/nginx/html

然而,像 Debian 这样的邪恶发行版似乎对其进行了相当多的修改,以让您更加开心:

% fgrep -e root -e include /etc/nginx/nginx.conf
    include /etc/nginx/mime.types;
    #include /etc/nginx/naxsi_core.rules;
    #passenger_root /usr;
    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;

% fgrep -e root -e include \
    /etc/nginx/conf.d/*.conf /etc/nginx/sites-enabled/*
/etc/nginx/conf.d/so.10674867.conf:server{listen 4867;return 200 $document_root\n;}
/etc/nginx/sites-enabled/default:   root /usr/share/nginx/www;
/etc/nginx/sites-enabled/default:       # include /etc/nginx/naxsi.rules
/etc/nginx/sites-enabled/default:   #   root /usr/share/nginx/www;
/etc/nginx/sites-enabled/default:   #   include fastcgi_params;
/etc/nginx/sites-enabled/default:   # deny access to .htaccess files, if Apache's document root
/etc/nginx/sites-enabled/default:#  root html;
/etc/nginx/sites-enabled/default:#  root html;

因此,在这个 Debian 实例上,您可以看到 root 最终设置为/usr/share/nginx/www.

但是正如您在示例服务器配置中看到的那样,它将$document_root通过 http 提供其价值,配置 nginx 非常简单,您可以用一两行代码编写自己的配置,指定root满足您的确切需求所需的配置。

于 2017-08-27T21:08:08.140 回答
1

Alpine Linux 根本没有任何默认位置。该文件/etc/nginx/conf.d/default.conf说:

# Everything is a 404
location / {
    return 404;
}

# You may need this to prevent return 404 recursion.
location = /404.html {
    internal;
}

将那些替换root /var/www/localhost/htdocs为指向您想要的目录的行。然后sudo service nginx restart重新启动。

于 2019-05-13T11:41:13.557 回答
0

导航到文件 $ cat /etc/nginx/nginx.conf

在 http --> server --> root 部分下的文件中

在这里,您将看到根目录的默认位置和所有错误页面。

于 2021-10-23T13:17:20.227 回答