NGinx Emplacement public www par défaut?

303

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?

user456584
la source

Réponses:

166

Si votre configuration n'inclut pas d' root /some/absolute/path;instruction, ou en inclut une qui utilise un chemin relatif commeroot some/relative/path; , alors le chemin résultant dépend des options de compilation.

Probablement le seul cas qui vous permettrait de faire une supposition éclairée de ce que cela signifie pour vous, si vous téléchargiez et compiliez vous-même la source. Dans ce cas, les chemins seraient relatifs à ce qui a --prefixété utilisé. Si vous ne l'avez pas modifié, il est par défaut /usr/local/nginx. Vous pouvez trouver les paramètres avec lesquels nginx a été compilé via nginx -V, il apparaît --prefixcomme le premier.

Étant donné que la rootdirective est par défauthtml , cela résulterait bien sûr en /usr/local/nginx/htmlla réponse à votre question.

Cependant, si vous avez installé nginx de toute autre manière, tous les paris sont désactivés. Votre distribution peut utiliser des chemins par défaut entièrement différents. Apprendre à comprendre quel type de valeurs par défaut votre distribution de choix utilise pour les choses est une autre tâche entièrement.

Gnarfoz
la source
32
Vous pouvez peut-être indiquer que vous pouvez utiliser "nginx -V" (majuscule V) pour découvrir les arguments de configuration utilisés pour compiler nginx.
kaufholdr
1
@kaufholdr est correct, vous trouverez le --prefix @ Gnarfoz mentionné ressemble à ceci --prefix = / usr / share / nginx
Dung
6
Cela dépend également du système d'exploitation dans lequel l'installation se trouve, pour Amazon Linux, le répertoire est: / usr / share / nginx / html
jeffmcneill
Le chemin --prefix n'est pas toujours correct. Sur mon installation Debian 9 Nginx, le chemin du préfixe était "/ var / www / html" mais il s'avère que le chemin par défaut acutal était "/ usr / share / nginx / html". L'examen du fichier de configuration par défaut dans / etc / nginx / sites-available / default a montré que le chemin d'accès était le même que le chemin --prefix. Mais le fichier de configuration situé dans /etc/nginx/conf.d/default.conf a répertorié la racine en tant que / usr / share / nginx / html. Le fichier default.conf a priorité sur le fichier par défaut normal. Assurez-vous de vérifier les deux fichiers de configuration ou vous travaillez peut-être avec la mauvaise racine.
Caveman
1
nginx -V 2>&1 | grep --color -o -e '--prefix=[^[:space:]]\+'vous donne la maison nginx.
sjas
436

Si vous installez sur Ubuntu en utilisant apt-get, essayez /usr/share/nginx/www.

ÉDITER:

Sur les versions plus récentes, le chemin d'accès est devenu: /usr/share/nginx/html

MODIFICATION 2019:

Pourrait essayer /var/www/html/index.nginx-debian.htmlaussi.

Lufix
la source
113
nginx 1.4.1 sur Ubuntu est dans / usr / share / nginx / html
Nick Desaulniers
Je viens d'installer nginx sur Raspberry, le répertoire par défaut est le même écrit par Lufix +1. Sur raspbian téléchargé depuis apt-get
Mitro
4
Je viens de confirmer que sur CentOS 7.0, il s'agit également de / usr / share / nginx / html
djhaskin987
2
Debian apt-get, vérifiez / etc / nginx / available-sites / default , J'y ai trouvé le chemin.
Chris.Zou
7
ubuntu 16 /var/www/html/index.nginx-debian.html
don bright
65

Le répertoire Nginx par défaut 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.

Babistalikesflyingonrails
la source
5
Dans CentOS, j'ai trouvé qu'il n'y avait pas de dossier / etc / nginx / sites-enabled /. il y a /etc/nginx/conf.d/ et il y a deux fichiers server.conf et virtual.conf qui ont les détails de ce serveur. Vous pouvez également le surveiller.
Nafis Ahmad
1
Pour ajouter au commentaire de Nafis, le nom de fichier dans le répertoire conf.d doit se terminer par .conf ou ils ne seront pas récupérés.
Ethan Hohensee
1
Cela ne s'applique que si le site par défaut est activé et correspond à la demande. Sinon, la racine par défaut est html.
OrangeDog
@OrangeDog Comment vérifier si default siteest activé?
Timo
1
@Timo cette réponse dit comment
OrangeDog
44

'racine Web publique par défaut' peut être trouvée à partir de la sortie 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'exemple au-dessus de la racine est / var / lib / nginx

Serge S
la source
1
Oui, le meilleur et multiplateforme.
Jesse Adelman
Ce n'est pas toujours correct "--prefix" peut être utilisé sur certains systèmes mais pas sur tous. Je suis d'accord que nginx -V vous donne beaucoup d'informations qui aideront à suivre où se trouvent les fichiers, mais cela dépend du système d'exploitation. IE sur FreeBSD ne se trouve pas dans le "--prefix", mais dans "/ usr / local / www" et dans certaines distributions Linux, il peut également différer. Il vaut mieux regarder dans la config.
Mikec
"--prefix" est la variable définie par la norme GNU - voir gnu.org/prep/standards/html_node/Directory-Variables.html .
Serge S
"--prefix" est la variable définie par la norme GNU - voir gnu.org/prep/standards/html_node/Directory-Variables.html . nginx respecte les normes. Si vous ne définissez pas la racine ou l'emplacement dans le fichier de configuration (cela dépend de --conf-path), le préfixe indiquera où se trouve «racine Web publique par défaut». Et cela ne dépend pas du système d'exploitation, bien qu'un package fourni avec une distribution de système d'exploitation puisse également fournir une configuration qui redéfinit à son tour la «racine Web publique par défaut».
Serge S
donc l'algorithme: recherchez --conf-path dans la sortie nginx -V . si l' emplacement / ou la racine n'est pas redéfini dans la configuration - utilisez --prefix pour l'emplacement 'racine Web publique par défaut'.
Serge S
25

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 donc il faudrait le créer manuellement.

freegnu
la source
1
+1 pour mentionner macOS et homebrew. Cependant, je trouve que si root html, index.htmlet 50x.htmlest mis directement /usr/local/var/www. Par conséquent, je doute qu'il existe un htmldossier. Pourriez-vous m'aider?
iplus26
3
"brew info nginx" Donne le docroot répertorié dans la sortie. Mais spécifier "root html" dans une configuration nginx change le docroot pour cette configuration nginx.
freegnu
1
Pour moi (MAC OS X El Capitan 10.11.5) et brew (1.1.5), le répertoire était /usr/local/Cellar/nginx/1.10.2_1/html où 1.10.2_1 est la version nginx.
Yogesh Yadav
2
Sur mon installation de brassage, le répertoire Cellar est un lien symbolique: /usr/local/Cellar/nginx/1.12.0_1/html -> ../../../var/www/et le nginx -V montre: --prefix=/usr/local/Cellar/nginx/1.12.0_1il en root htmlest de même pour une redirection via ce lien.
Mark Edington
@ iplus26 répertoire html déjà disponible /usr/local/Cellar/nginx/1.12.2_1/html, je pense / usr / local / var / www juste un lien
Kanagavelu Sugumar
21

Vous pouvez simplement mapper le dossier racine de nginx à l'emplacement de votre site Web:

nano /etc/nginx/sites-enabled/default

à l'intérieur de fichier par défaut , recherchez la racine dans la balise du serveur et modifiez le dossier par défaut de votre site Web, par exemple mes sites Web sont dans / 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 mis en correspondance avec mon site Web à l'adresse / var / www . J'ai trouvé que c'était la meilleure façon 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

Btw, nginx est en fait très rapide!

Waqas
la source
19

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 faire le vôtre.

tout ce dont vous avez besoin est d'en créer un dans l'arborescence racine du serveur Web et de lui donner des autorisations "pas 0777" et uniquement pour un utilisateur et visible par cet utilisateur uniquement, mais la fin du chemin est visible par tout le monde depuis la fin du chemin est ce que vos fichiers et dossiers seront affiché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/;
}
Site numérique
la source
Oui, vous avez raison. Je viens d'installer Nginx sur mon centos7 et j'ai remarqué que le chemin par défaut est /usr/share/nginx/html/folder. Y a-t-il une raison de changer ce chemin (pour des raisons de sécurité ou pour toute autre raison)? Est-il correct de le laisser dans le dossier par défaut si je vais être le seul utilisateur et si je ne vais y héberger qu'un site Web?
Neel
Peu importe ma dernière question. J'ai fini par créer des dossiers séparés pour cela car je pensais que c'était mieux de cette façon, au cas où je voudrais ajouter des vhosts différents à cette configuration à l'avenir. C'est plus simple de cette façon. A bientôt :)
Neel
11

Le dossier Web par défaut pour nginx dépend de la façon dont vous l'avez installé, mais normalement il se trouve à ces emplacements:

/usr/local/nginx/html
/usr/nginx/html
Jack
la source
10

Pour les images Ubuntu et docker:

 /usr/share/nginx/html/
DimiDak
la source
Juste curieux, disons que je ne le savais pas, comment pourrais-je trouver quel est le bon endroit? Il existe de nombreuses réponses à cette question
Royi Namir
Pour autant que je m'en souvienne, j'ai recherché "nginx" (quelque chose comme find / -name nginx) et j'ai trouvé dans ce répertoire (ou dans son sous-répertoire) le document qui est apparu dans mon navigateur.
DimiDak
9

Exécutez la commande nginx -V et recherchez le fichier --prefix. Utilisez cette entrée pour localiser vos chemins par défaut.

Jack
la source
9

Vider 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 façon dont votre a nginxété configuré / installé.

Références:

Mise à jour: il y a une certaine confusion sur la question de savoir si / quand l' -Toption a été ajoutée nginx. Il a été documenté dans la page de manuel de vl-homutov le 16 juin 2015, qui a été intégrée à la version v1.9.2 . Il est même mentionné dans les notes de version . L' -Toption est présente dans chaque nginxversion depuis, 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
rubicks
la source
je ne pense pas que ce drapeau existe, vous devrez peut-être mettre à jour la réponse
lfender6445
@ ifender6445, je suis complètement confus par votre commentaire. J'ai deux références à des lignes dans la source, chacune montrant l' -Toption. L' -Toption manque-t-elle dans votre installation particulière? Pouvez-vous montrer quoi que ce soit pour étayer votre réclamation?
rubicks
oui, peut-être une version différente de nginx? gist.github.com/lfender6445/ed8c5e26db64eba595ae4aaf4d15ee0d
lfender6445
je vois. il semble que j'utilise une ancienne version de nginx, excuses!
lfender6445
9

Regardez dans le fichier de configuration nginx pour être sûr. Cette commande recherche tout 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;

Thamme Gowda
la source
8

Sur Mac, installez nginx avec brew:

/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;
}  
user2413075
la source
8

Pour CentOS, Ubuntu et Fedora, le répertoire par défaut est /usr/share/nginx/html

MucaP
la source
Je veux la racine nginx var/www/html.
Dhaduk Mitesh
7

Pour AWS EC2 Linux, vous trouverez ici:

/usr/share/nginx
Vivek Sharma
la source
5

Dans mon cas, c'était /usr/share/nginx/html

vous pouvez essayer de trouver en effectuant une recherche

find / -name html
Eduardo Dennis
la source
5

Si vous êtes sur Ubuntu 14.04, vous pouvez trouver le répertoire nginx www au chemin suivant:

yusuf@yusuf-he:/usr/share/nginx/html$ pwd
/usr/share/nginx/html
yusuf@yusuf-he:/usr/share/nginx/html$
Yusuf Ibrahim
la source
Merci, bref concis et précis. Parfois, l'explication la plus simple est la meilleure.
WhyAyala
Je veux la racine nginx var/www/html.
Dhaduk Mitesh
5

Vous pouvez le rechercher, peu importe où ils l'ont déplacé (administrateur système déplacé ou version plus récente de nginx)

trouver / -name nginx

Dylan B
la source
4

Si vous avez besoin de découvrir le dossier racine public nginx qui a été défini au moment de la compilation, vous pouvez simplement vérifier votre fichier access.log.

  1. Ouvrez nginx.conf
  2. Trouver le log_format directive
  3. La valeur de log_format est une chaîne de modèle utilisée pour écrire des informations dans le fichier access.log . Vous pouvez ajouter la variable $ document_root à cette chaîne de modèle pour consigner l'emplacement par défaut de la racine www dans un fichier.

Voici un exemple de la section http de nginx.conf avec la directive log_format modifiée , $ 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. .......
  1. 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;
    }
    
    1. Ajoutez la ligne suivante au fichier / etc / hosts: 127.0.0.1 localhost

    2. Recharger la configuration nginx: nginx -s reload

    3. Envoyez la demande GET à http: // localhost :curl http://localhost

    4. 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 de document par défaut définie au moment 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" "-"
G.Denis
la source
il semble que cela fonctionne, mais ne m'a pas résolu, Un enregistrement pour * .knexusgroup.com est sur 54.235.222.119, w3.knexusgroup.com mais il n'a enregistré aucun domaine <anything> .knexusgroup.com. Cela fonctionne là où il y a une bonne définition du répertoire racine, je ne suis pas en mesure de comprendre quel est le problème, pourquoi je ne peux pas trouver de racine pour un sous-domaine qui ne correspond à aucune configuration ngiinx.
Ramratan Gupta
4

vous pouvez accéder au fichier config nginx, vous pouvez voir root / path. dans ce défaut d'Apache Nginx à/var/www/html

tomnyson
la source
/var/www/htmlest la racine Web par défaut pour apache, pas nginx.
Ethan Hohensee
4

* 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 / ...

user11793803
la source
3

Juste pour noter que la page d'index par défaut du serveur nginx affichera également l'emplacement racine. Du 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 qui est distribuée avec nginx sur l'AMI Amazon Linux. Il se trouve dans / usr / share / nginx / html.

Vous devez maintenant placer votre contenu dans un emplacement de votre choix et éditer la directive de configuration racine dans le fichier de configuration nginx /etc/nginx/nginx.conf

jboles
la source
3

Mon nginx sur Ubuntu est "version nginx: nginx / 1.9.12 (Ubuntu)" et le chemin racine est / var / www / html /

Les informations sur Ubuntu sont: Aucun module LSB n'est disponible. ID 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 y a une configuration comme "root / web / root / path / va / ici". Et c'est ce que vous recherchez.

Daniel Dong
la source
3

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 allez dans le dossier suivant / etc / nginx / sites-available

étape 2 éditez le fichier par défaut en ce que vous pouvez trouver un bloc serveur sous lequel il y aura une ligne nommée en tant que racine qui définit l'emplacement.

gokul kandasamy
la source
3

dans Ubuntu 19.04, nous l'avons trouvé sur

/ usr / share / nginx / html

Arséne
la source
2

Pour nginx / 1.4.6 (Ubuntu)

/etc/nginx$ cat /etc/nginx/sites-available/default | grep -i root
- root /usr/share/nginx/html;
lfender6445
la source
2

Dans Ubuntu, l'emplacement du répertoire racine par défaut de Nginx est /usr/share/nginx/html

Syed Abdul Qadeer
la source
1

La valeur par défaut est liée à l' prefixoption du configurescript lorsque nginx est compilé; voici un exemple étrange 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

Par la suite, la valeur par défaut de rootest définie dans le htmlrépertoire (selon la documentation de la rootdirective ), qui se trouve à l'intérieur prefix, comme cela peut être vérifié en regardant la $document_rootvariable à 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, les distributions maléfiques comme Debian semblent le modifier un peu, pour vous divertir davantage:

% 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 $document_rootvaleur 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 la configuration requise rootpour répondre à vos besoins exacts.

cnst
la source
qu'est-ce que cela signifie root html;, je veux dire quel est le vrai chemin?
Ramratan Gupta
1
@RamratanGupta, n'avez-vous pas lu la réponse? Les toutes premières lignes indiquent que le chemin est relatif au paramètre de préfixe de compilation.
2017
1

J'ai également eu ce problème sur Digital Ocean en exécutant un site Web WordPress avec nginx.

Ma solution était de faire ce qui suit:

  1. Modifiez le /etc/nginx/nginx.conffichier avec les éléments suivants:
server {
root /var/www/html;
}

J'ai dû sudo service nginx restart

nginx -VLa commande vous montre également où se trouve votre fichier de configuration nginx (le mien a été pointé /etc/nginx/nginx.conf)

John C
la source
0

Alpine Linux n'a aucun emplacement par défaut. Le dossier /etc/nginx/conf.d/default.confdit:

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

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

Remplacez ceux par une ligne comme root /var/www/localhost/htdocspour pointer vers le répertoire que vous souhaitez. Puis sudo service nginx restartpour redémarrer.

Lassi
la source
1
Pas vrai. Je viens d'essayer la dernière nginx:alpineimage et elle sert le contenu /usr/share/nginx/htmlde la boîte.
Jimbali
1
Cela ressemble à une image Docker créée par le projet nginx qui utilise justement Alpine Linux comme système d'exploitation sous-jacent. Lorsque vous installez Alpine Linux comme système d'exploitation principal et que apk add nginxvous installez manuellement nginx à partir du propre gestionnaire de packages d'Alpine, vous obtenez la situation décrite dans ma réponse (ou c'était le cas lorsque je l'ai essayé il y a quelques mois de toute façon).
Lassi