我以前使用过 Apache,所以我知道默认的公共 Web 根目录通常是/var/www/
.
我最近开始使用 nginx,但似乎找不到默认的公共 Web 根目录。
我在哪里可以找到 nginx 的默认公共 Web 根目录?
我以前使用过 Apache,所以我知道默认的公共 Web 根目录通常是/var/www/
.
我最近开始使用 nginx,但似乎找不到默认的公共 Web 根目录。
我在哪里可以找到 nginx 的默认公共 Web 根目录?
如果使用 apt-get 在 Ubuntu 上安装,请尝试/usr/share/nginx/www
.
编辑:
在更新的版本中,路径已更改为:
/usr/share/nginx/html
2019年编辑:
也可以试试/var/www/html/index.nginx-debian.html
。
如果您的配置不包含root /some/absolute/path;
语句,或者它包含使用相对路径(如)的语句,root some/relative/path;
则生成的路径取决于编译时选项。
如果您自己下载并编译了源代码,那么可能是唯一能让您对这对您意味着什么做出有根据的猜测的情况。在这种情况下,路径将与--prefix
所使用的内容相关。如果您没有更改它,则默认为/usr/local/nginx
. 你可以找到参数 nginx 是用 via 编译的nginx -V
,它--prefix
列为第一个。
由于该root
指令默认为html
,因此这当然会/usr/local/nginx/html
成为您问题的答案。
但是,如果您以任何其他方式安装 nginx,那么所有的赌注都将失败。您的发行版可能使用完全不同的默认路径。学习弄清楚你的选择分布使用什么样的默认值完全是另一项任务。
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;
}
根是默认位置。
'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
对于 Ubuntu 和 docker 映像:
/usr/share/nginx/html/
在 Mac OS X 上,使用 brew 安装 nginx 会生成默认目录:
/usr/local/var/www
所以:
root html
方法
root /usr/local/var/www/html
没有 html 目录,因此必须手动创建。
正如这里的大多数用户所说,它在这条路径下:
/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/;
}
您可以简单地将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 实际上非常快!
查看 nginx 配置文件以确定。此命令对您机器上配置的任何内容进行 greps:
cat /etc/nginx/sites-enabled/default |grep "root"
在我的机器上是:root /usr/share/nginx/www;
nginx 的默认 web 文件夹取决于您的安装方式,但通常位于以下位置:
/usr/local/nginx/html
/usr/nginx/html
转储配置:
$ 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
运行命令 nginx -V
并查找--prefix
. 使用该条目来定位您的默认路径。
在 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;
}
对于 CentOS、Ubuntu 和 Fedora,默认目录是/usr/share/nginx/html
对于 AWS EC2 Linux,您可以在此处找到:
/usr/share/nginx
请注意,nginx 服务器的默认索引页面也将显示根位置。从 Amazon Linux AMI 上的 nginx (1.4.3),您将获得以下信息:
这是在 Amazon Linux AMI 上随 nginx 分发的默认 index.html 页面。它位于 /usr/share/nginx/html。
您现在应该将您的内容放在您选择的位置,并在 nginx 配置文件 /etc/nginx/nginx.conf 中编辑根配置指令
就我而言,它在/usr/share/nginx/html
您可以尝试通过执行搜索来查找
find / -name html
如果您使用的是 Ubuntu 14.04,您可以在以下路径找到 nginx www 目录:
yusuf@yusuf-he:/usr/share/nginx/html$ pwd
/usr/share/nginx/html
yusuf@yusuf-he:/usr/share/nginx/html$
您可以搜索它,无论他们将它移动到哪里(系统管理员移动或更新版本的 nginx)
查找 / -name nginx
你可以访问文件配置 nginx,你可以看到 root /path。在这个默认的 nginx apache 中/var/www/html
如果您需要找出在编译时定义的 nginx 公共根文件夹,您可以检查您的 access.log 文件。
这是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. .......
然后备份 conf.d 目录中的所有配置文件 *.conf 并在那里创建配置文件test.conf,其中包含以下几行:
server{
listen 80;
server_name localhost;
}
将以下行添加到 /etc/hosts 文件:127.0.0.1 localhost
重新加载 nginx 配置:nginx -s reload
向http://localhost发送 GET 请求:curl http://localhost
检查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" "-"
*默认页面 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/...
我在 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”的配置。这就是你要找的。
在 Ubuntu 中,Nginx 默认的根目录位置是/usr/share/nginx/html
您可以在 /var/www/ 中找到它,这是 nginx 和 apache 的默认目录,但您可以更改它。步骤 1 转到以下文件夹 /etc/nginx/sites-available
第 2 步编辑默认文件,您可以在其中找到一个服务器块,在该块下将有一个名为 root 的行,它定义了该位置。
在 ubuntu 19.04 中,我们在
/usr/share/nginx/html
对于 nginx/1.4.6 (Ubuntu)
/etc/nginx$ cat /etc/nginx/sites-available/default | grep -i root
- root /usr/share/nginx/html;
我在使用 nginx 运行 WordPress 网站的 Digital Ocean 上也遇到了这个问题。
我的解决方案是执行以下操作:
/etc/nginx/nginx.conf
文件:server {
root /var/www/html;
}
然后我不得不sudo service nginx restart
nginx -V
命令还向您显示您的 nginx 配置文件的位置(我的被指向/etc/nginx/nginx.conf
)
默认与编译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
满足您的确切需求所需的配置。
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
重新启动。
导航到文件 $ cat /etc/nginx/nginx.conf
在 http --> server --> root 部分下的文件中
在这里,您将看到根目录的默认位置和所有错误页面。