Answers:
如果您的配置不包含一条root /some/absolute/path;
语句,或者它包含一条使用相对路径(例如)的语句,root some/relative/path;
则结果路径取决于编译时选项。
如果您自己下载并编译了源代码,那么可能唯一可以让您做出有根据的猜测的情况是什么。在这种情况下,路径将相对于--prefix
所使用的路径。如果您没有更改,则默认为/usr/local/nginx
。您可以找到参数nginx是通过via编译的nginx -V
,它被--prefix
列为第一个。
由于该root
选项默认为html
,这将,当然,导致/usr/local/nginx/html
作为回答你的问题。
但是,如果您以其他任何方式安装nginx,则所有选择都将关闭。您的发行版可能使用完全不同的默认路径。学习弄清您的选择分配用于事物的默认类型是完全另一项任务。
nginx -V 2>&1 | grep --color -o -e '--prefix=[^[:space:]]\+'
给你nginx HOME。
如果使用apt-get在Ubuntu上安装,请尝试/usr/share/nginx/www
。
编辑:
在最新版本中,路径已更改为:
/usr/share/nginx/html
2019年编辑:
也可以尝试/var/www/html/index.nginx-debian.html
。
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;
}
根是默认位置。
html
。
default site
已启用?
可以从nginx -V输出中找到“默认公共Web根”:
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
在Mac OS X上,通过brew安装nginx成为默认目录:
/usr/local/var/www
所以:
root html
手段
root /usr/local/var/www/html
没有html目录,因此必须手动创建。
root html
,index.html
并将50x.html
其直接放在中/usr/local/var/www
。因此,我怀疑html
文件夹的存在。您能帮我些帮助吗?
/usr/local/Cellar/nginx/1.10.2_1/html
是nginx版本1.10.2_1。
/usr/local/Cellar/nginx/1.12.0_1/html -> ../../../var/www/
和nginx -V
表演:--prefix=/usr/local/Cellar/nginx/1.12.0_1
所以root html
是通过该链接重定向。
您可以简单地将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实际上非常快!
就像大多数用户所说的那样,它位于以下路径下:
/usr/share/nginx/html
这是默认路径,但是您可以自己设置。
您所需要做的就是在Web服务器根目录树中创建一个,并为其赋予一些权限“ not 0777”,并且仅对一个用户可见,并且仅对该用户可见,但是从路径末尾开始,路径的末尾对所有人可见是您的文件和文件夹将被公众查看的内容。
例如,您可以这样制作:
home_web/site1/public_html/www/
每当您在Nginx中创建虚拟主机时,都可以自定义自己的根路径,只需在服务器块中添加以下内容:
server {
listen 80;
server_name yoursite.com;
root /home_web/site1/public_html/www/;
}
/usr/share/nginx/html/
folder。是否有理由完全更改该路径(出于安全性或其他原因)?如果我将成为唯一用户并且仅在其中托管1个网站,可以将其保留在默认文件夹中吗?
转储配置:
$ nginx -T
...
server {
...
location / {
root /usr/share/nginx/html;
...
}
...
}
您得到的内容可能有所不同,因为这取决于您的nginx
配置/安装方式。
参考文献:
更新:if / when -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
-T
选项。-T
您的特定安装中是否缺少该选项?您能显示任何证据来证明您的主张吗?
对于AWS EC2 Linux,您将在这里找到:
/usr/share/nginx
如果您使用的是Ubuntu 14.04,则可以在以下路径中找到nginx www目录:
yusuf@yusuf-he:/usr/share/nginx/html$ pwd
/usr/share/nginx/html
yusuf@yusuf-he:/usr/share/nginx/html$
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备份到conf.d目录中,并在其中创建配置文件test.conf并包含以下几行:
server{
listen 80;
server_name localhost;
}
将以下行添加到/ etc / hosts文件中: 127.0.0.1 localhost
重新加载nginx配置: nginx -s reload
发送GET请求到http:// localhost: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" "-"
*在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”。这就是您想要的。
对于nginx / 1.4.6(Ubuntu)
/etc/nginx$ cat /etc/nginx/sites-available/default | grep -i root
- root /usr/share/nginx/html;
在Ubuntu中,Nginx的默认根目录位置为 /usr/share/nginx/html
默认值与编译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实例上,您可以看到根目录最终设置为/usr/share/nginx/www
。
但是,就像通过示例服务器配置(可$document_root
通过http 为其提供值)所看到的那样,配置nginx非常简单,您只需一行或两行就可以编写自己的配置,并指定root
满足实际需求的要求。
root html;
,我的意思是什么是真实的道路?
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
重新启动。
nginx:alpine
图像,它可以立即提供内容/usr/share/nginx/html
。
apk add nginx
通过Alpine自己的软件包管理器手动安装nginx时,您会得到我的回答中所述的情况(或者几个月前我尝试过的情况)。