J'ai déjà travaillé avec Apache. Je suis donc conscient que la racine Web publique par défaut est généralement /var/www/
.
J'ai récemment commencé à travailler avec nginx, mais je n'arrive pas à trouver la racine Web publique par défaut.
Où puis-je trouver la racine Web publique par défaut pour nginx?
Si votre configuration n'inclut pas d'instruction root /some/absolute/path;
, ou si elle en utilise une qui utilise un chemin relatif, tel que root some/relative/path;
, le chemin résultant dépend des options de compilation.
Probablement le seul cas qui vous permettrait de faire une supposition éclairée sur ce que cela signifie pour vous, si vous téléchargé et compiliez vous-même la source. Dans ce cas, les chemins seraient relatifs à ce que --prefix
aurait été utilisé. Si vous ne l'avez pas changé, la valeur par défaut est /usr/local/nginx
. Vous pouvez trouver les paramètres avec lesquels nginx a été compilé via nginx -V
, le premier étant --prefix
.
Puisque la directive root
est définie par défaut sur html
, il en résulterait bien entendu que /usr/local/nginx/html
serait la réponse à votre question.
Cependant, si vous avez installé nginx d’une autre manière, tous les paris sont désactivés. Votre distribution peut utiliser des chemins par défaut entièrement différents. Apprendre à déterminer le type de valeurs par défaut que votre distribution de choix utilise pour les choses est une autre tâche.
Si vous installez sur Ubuntu avec apt-get, essayez /usr/share/nginx/www
.
EDIT:
Sur les versions plus récentes, le chemin a été remplacé par: /usr/share/nginx/html
Le répertoire par défaut de Nginx sur Debian est /var/www/nginx-default
.
Vous pouvez vérifier le fichier: /etc/nginx/sites-enabled/default
et trouve
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;
}
La racine est l'emplacement par défaut.
Vous pouvez trouver la 'racine Web publique par défaut' à partir de la sortie de 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
la valeur --prefix est la réponse à la question. pour l'échantillon au-dessus de la racine est/var/lib/nginx
Sur Mac OS X, l’installation de nginx avec brew crée le répertoire par défaut:
/usr/local/var/www
Alors:
root html
veux dire
root /usr/local/var/www/html
Il n'y a pas de répertoire HTML, il devrait donc être créé manuellement.
Vous pouvez simplement mapper le dossier racine de nginx à l'emplacement de votre site Web:
nano /etc/nginx/sites-enabled/default
dans le fichier par défaut, recherchez racine dans la balise du serveur et modifiez le dossier par défaut de votre site Web, par exemple. mes sites Web sont à / var/www
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
root /var/www; <-- Here!
...
Lorsque j'évaluais nginx, Apache2 et lighttpd, je les ai tous mappés sur mon site Web situé à l'emplacement / var/www. J'ai trouvé cela le meilleur moyen d'évaluer efficacement.
Ensuite, vous pouvez démarrer/arrêter le serveur de votre choix et voir celui qui fonctionne le mieux.
par exemple.
service Apache2 stop
service nginx start
En fait, nginx est vraiment très rapide!
comme la plupart des utilisateurs l'ont dit ici, c'est sous ce chemin:
/usr/share/nginx/html
C'est le chemin par défaut, mais vous pouvez le faire.
tout ce dont vous avez besoin est d'en créer un dans l'arborescence racine du serveur Web et de lui attribuer des autorisations "non 0777", réservées à un utilisateur et uniquement visibles par cet utilisateur, mais la fin du chemin d'accès est visible par tout le monde depuis la fin du chemin. est ce que vos fichiers et dossiers seront visionnés par le public.
par exemple, vous pouvez en créer un comme ceci:
home_web/site1/public_html/www/
chaque fois que vous créez un hôte virtuel dans Nginx, vous pouvez personnaliser votre propre chemin racine. Ajoutez simplement quelque chose comme ceci dans votre bloc serveur:
server {
listen 80;
server_name yoursite.com;
root /home_web/site1/public_html/www/;
}
Le dossier Web par défaut pour nginx dépend de la façon dont vous l'avez installé, mais il se trouve normalement à ces emplacements:
/usr/local/nginx/html
/usr/nginx/html
Exécutez la commande nginx -V
et recherchez le --prefix
. Utilisez cette entrée pour localiser vos chemins par défaut.
Pour les images Ubuntu et docker:
/usr/share/nginx/html/
Dump de la configuration:
$ nginx -T
...
server {
...
location / {
root /usr/share/nginx/html;
...
}
...
}
Ce que vous obtenez peut être différent, car cela dépend de la manière dont votre nginx
a été configuré/installé.
Références:
Mise à jour: Il y a une certaine confusion sur la question de savoir si/quand l'option -T
a été ajoutée à nginx
. Il a été documenté dans la page de manuel par vl-homutov le 16 juin 2015, qui est devenu partie intégrante de version v1.9.2 . C'est même mentionné dans les notes de publication . L'option -T
a été présente dans chaque version de nginx
, y compris celle disponible sur 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
Sur Mac, installez nginx avec infusion:
/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;
}
Pour CentOS, Ubuntu et Fedora, le répertoire par défaut est /usr/share/nginx/html
Regardez dans le fichier de configuration de nginx pour vous en assurer. Cette commande indique ce qui est configuré sur votre machine:
cat /etc/nginx/sites-enabled/default |grep "root"
sur ma machine, c’était: `root/usr/share/nginx/www;
Pour AWS EC2 Linux, vous trouverez ici:
/usr/share/nginx
Si vous êtes sur Ubuntu 14.04, vous pouvez trouver le répertoire www de nginx au chemin suivant:
yusuf@yusuf-he:/usr/share/nginx/html$ pwd
/usr/share/nginx/html
yusuf@yusuf-he:/usr/share/nginx/html$
Dans mon cas, c'était dans /usr/share/nginx/html
vous pouvez essayer de trouver en effectuant une recherche
find / -name html
Vous pouvez le rechercher, quel que soit l'endroit où ils l'ont déplacé (administrateur système déplacé ou version plus récente de nginx)
find/-name nginx
Il suffit de noter que la page d'index par défaut du serveur nginx affichera également l'emplacement racine. À partir de nginx (1.4.3) sur Amazon Linux AMI, vous obtenez les éléments suivants:
Il s'agit de la page index.html par défaut distribuée avec nginx sur l'AMI Amazon Linux. Il se trouve dans/usr/share/nginx/html.
Vous devez maintenant placer votre contenu à l'emplacement de votre choix et modifier la directive de configuration racine dans le fichier de configuration nginx /etc/nginx/nginx.conf.
Si vous avez besoin de connaître le dossier racine public nginx défini lors de la compilation, vous pouvez simplement vérifier votre fichier access.log.
Voici un exemple tiré de la section http de nginx.conf avec modifié log_format directive, $ document_root est ajouté au début de la chaîne:
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. .......
Sauvegardez ensuite tous les fichiers de configuration * .conf dans le répertoire conf.d et créez-y le fichier de configuration test.conf avec les lignes suivantes:
server{
listen 80;
server_name localhost;
}
Ajoutez la ligne suivante au fichier/etc/hosts: 127.0.0.1 localhost
Rechargez la configuration nginx: nginx -s reload
Envoyer la demande GET à http: // localhost : curl http://localhost
Vérifiez la dernière chaîne de access.log : tail -n 1 /var/log/nginx/access.log
Voici l'exemple de sortie de cette commande, où /etc/nginx/html est la racine du document par défaut définie lors de la compilation:
/etc/nginx/html 127.0.0.1 - - [15/Mar/2017:17:12:25 +0200] "GET / HTTP/1.1" 404 169 "-" "curl/7.35.0" "-"
vous pouvez accéder au fichier de configuration nginx, vous pouvez voir racine/chemin. dans ce défaut de nginx Apache à /var/www/html
Vous pouvez le trouver dans/var/www/qui est le répertoire par défaut pour nginx et Apache mais vous pouvez le changer. étape 1 aller dans le dossier suivant/etc/nginx/sites-available
étape 2 éditez le fichier par défaut en ce que vous pouvez trouver un bloc de serveur sous lequel il y aura une ligne nommée root qui définira l’emplacement.
dans Ubuntu 19.04, nous l’avons trouvé
/ usr/share/nginx/html
Mon nginx sur Ubuntu est "version de nginx: nginx/1.9.12 (Ubuntu)" et le chemin racine est/var/www/html /.
Ubuntu info is: Aucun module LSB n'est disponible. Identifiant du distributeur: Ubuntu Description: Ubuntu 16.04 LTS Version: 16.04 Nom de code: xenial
En fait, si vous venez d'installer nginx sur Ubuntu, vous pouvez aller dans "/ etc/nginx/sites-available" et vérifier le fichier par défaut. Il existe une configuration du type "racine/web/racine/chemin/va/ici". Et c'est ce que vous recherchez.
La valeur par défaut est liée à l'option prefix
du script configure
lorsque nginx est compilé; voici quelques exemples étranges de 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
Ensuite, la valeur par défaut de root
est définie dans le répertoire html
(conformément à la documentation de la directive root
), qui se trouve à l'intérieur prefix
, comme on peut le vérifier en consultant la variable $document_root
à partir d'un simple fichier de configuration:
# 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
Cependant, des distributions maléfiques telles que Debian semblent le modifier un peu, pour vous divertir:
% 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;
Donc, sur cette instance de Debian, vous pouvez voir que la racine est finalement définie sur /usr/share/nginx/www
.
Mais comme vous l'avez vu avec l'exemple de configuration de serveur qui servirait sa valeur $document_root
sur http, la configuration de nginx est assez simple pour que vous puissiez écrire votre propre configuration en une ou deux lignes, en spécifiant le root
requis pour répondre à vos besoins exacts.
Dans Ubuntu, l'emplacement du répertoire racine par défaut de Nginx est /usr/share/nginx/html
Pour nginx/1.4.6 (Ubuntu)
/etc/nginx$ cat /etc/nginx/sites-available/default | grep -i root
- root /usr/share/nginx/html;
J'ai également eu ce problème sur Digital Ocean avec un site Web WordPress avec nginx.
Ma solution était la suivante:
/etc/nginx/nginx.conf
avec les éléments suivants:server {
root /var/www/html;
}
Je devais alors Sudo service nginx restart
La commande nginx -V
vous indique également où se trouve votre fichier de configuration nginx (le mien a été pointé à /etc/nginx/nginx.conf
)
* pages Web par défaut allouées dans var/www/html* serveur de configuration par défaut 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;
}
}
* serveur de configuration par défaut etc/nginx/nginx.conf
contenu..
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;
# }
#}
journaux d'accès par défaut avec les clients IP var/log/nginx /...
Alpine Linux n’a aucun emplacement par défaut. Le fichier /etc/nginx/conf.d/default.conf
dit:
# Everything is a 404
location / {
return 404;
}
# You may need this to prevent return 404 recursion.
location = /404.html {
internal;
}
Remplacez-les par une ligne telle que root /var/www/localhost/htdocs
pour qu'elle pointe vers le répertoire souhaité. Puis Sudo service nginx restart
pour redémarrer.