NGinx Domyślna publiczna lokalizacja www?

302

Wcześniej współpracowałem z Apache, więc mam świadomość, że domyślny publiczny katalog główny to zazwyczaj /var/www/ .

Niedawno zacząłem pracować z nginx, ale nie mogę znaleźć domyślnego publicznego katalogu głównego.

Gdzie mogę znaleźć domyślny publiczny katalog główny dla nginx?

użytkownik456584
źródło

Odpowiedzi:

166

Jeśli Twoja konfiguracja nie zawiera root /some/absolute/path;instrukcji lub zawiera taką, która używa ścieżki względnej, takiej jakroot some/relative/path; , to wynikowa ścieżka zależy od opcji czasu kompilacji.

Prawdopodobnie jedyny przypadek, który pozwoliłby ci zgadnąć, co to dla ciebie znaczy, gdybyś sam pobrał i skompilował źródło. W takim przypadku ścieżki byłyby względne w stosunku do wszystkiego, co --prefixzostało użyte. Jeśli go nie zmieniłeś, domyślnie jest to /usr/local/nginx. Możesz znaleźć parametry, z którymi skompilowano nginx przez nginx -V, to jest wymienione --prefixjako pierwsze.

Ponieważ dyrektywa domyślnie przyjmuje wartość rootdomyślnąhtml , spowodowałoby to oczywiście/usr/local/nginx/html jest odpowiedź na swoje pytanie.

Jeśli jednak zainstalowałeś nginx w jakikolwiek inny sposób, wszystkie zakłady są wyłączone. Twoja dystrybucja może korzystać z zupełnie innych domyślnych ścieżek. Nauczenie się, jakimi domyślnymi ustawieniami jest twoja dystrybucja wybranych rzeczy, to zupełnie inne zadanie.

Gnarfoz
źródło
32
Możesz dać wskazówkę, że możesz użyć „nginx -V” (wielkie litery V), aby odkryć argumenty konfiguracyjne użyte do kompilacji nginx.
kaufholdr
1
@kaufholdr ma rację - zauważysz, że --prefix @ Gnarfoz wspomniany wygląda podobnie do tego --prefix = / usr / share / nginx
Dung
6
Zależy to również od tego, w jakim systemie operacyjnym jest instalacja, w przypadku Amazon Linux katalog to: / usr / share / nginx / html
jeffmcneill
Ścieżka --prefiks nie zawsze jest poprawna. Na mojej instalacji Debiana 9 nginx ścieżka prefiksu brzmiała „/ var / www / html”, ale jak się okazuje, domyślną ścieżką acutal była „/ usr / share / nginx / html”. Przeglądnięcie domyślnego pliku konfiguracyjnego w / etc / nginx / sites-available / default pokazało, że ścieżka jest taka sama jak ścieżka --prefix. Ale plik konfiguracyjny znajdujący się w /etc/nginx/conf.d/default.conf zawierał katalog główny jako / usr / share / nginx / html. Plik default.conf ma pierwszeństwo przed zwykłym plikiem domyślnym. Sprawdź oba pliki konfiguracyjne lub możesz pracować z niewłaściwym rootem.
Jaskiniowiec
1
nginx -V 2>&1 | grep --color -o -e '--prefix=[^[:space:]]\+'daje Nginx HOME.
sjas
436

Jeśli instalujesz na Ubuntu przy użyciu apt-get, spróbuj /usr/share/nginx/www .

EDYTOWAĆ:

W nowszych wersjach ścieżka zmieniła się na: /usr/share/nginx/html

EDYCJA 2019:

Mogę też spróbować /var/www/html/index.nginx-debian.html.

Lufix
źródło
113
nginx 1.4.1 na Ubuntu znajduje się w / usr / share / nginx / html
Nick Desaulniers
Właśnie zainstalowałem nginx na Raspberry, domyślny katalog jest taki sam, jak napisany przez Lufix +1. Na raspbian pobrane z apt-get
Mitro
4
Właśnie potwierdziłem, że w CentOS 7.0 jest to również / usr / share / nginx / html
djhaskin987
2
Debian apt-get, check / etc / nginx / available-sites / default, znalazłem tam ścieżkę.
Chris.Zou,
7
ubuntu 16 /var/www/html/index.nginx-debian.html
don bright
65

Domyślny katalog Nginx w Debianie to /var/www/nginx-default .

Możesz sprawdzić plik: /etc/nginx/sites-enabled/default

i znajdź

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;
        }

Katalog główny to domyślna lokalizacja.

Babistalikesflyingonrails
źródło
5
W CentOS odkryłem, że nie ma folderu / etc / nginx / sites-enabled /. jest /etc/nginx/conf.d/, a tam dwa pliki server.conf i virtual.conf mają dane tego serwera. Możesz na to również uważać.
Nafis Ahmad
1
Aby dodać do komentarza Nafisa, nazwa pliku w katalogu conf.d musi kończyć się na .conf, w przeciwnym razie nie zostaną pobrane.
Ethan Hohensee
1
Ma to zastosowanie tylko wtedy, gdy domyślna witryna jest włączona i odpowiada żądaniu. W przeciwnym razie domyślnym katalogiem głównym jest html.
OrangeDog,
@OrangeDog Jak sprawdzić, czy default sitejest włączony?
Timo
1
@ Timo ta odpowiedź mówi, jak
OrangeDog
43

„Domyślny publiczny katalog główny” można znaleźć na wyjściu 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

wartość --prefiks jest odpowiedzią na pytanie. dla próbki powyżej katalogu głównego jest / var / lib / nginx

Serge S.
źródło
1
Tak, najlepszy i wieloplatformowy.
Jesse Adelman
Nie zawsze jest to poprawne „--prefiks” może być używany w niektórych systemach, ale nie we wszystkich. Zgadzam się, że nginx -V daje wiele informacji, które pomogą śledzić, gdzie są pliki, ale to zależy od systemu operacyjnego. IE na FreeBSD nie jest w jakimkolwiek „--prefiksie”, ale w „/ usr / local / www”, a w niektórych dystrybucjach Linuksa może się również wahać. Najlepiej zajrzeć do konfiguracji.
Mikec
„--prefix” jest zmienną zdefiniowaną w standardzie GNU - patrz gnu.org/prep/standards/html_node/Directory-Variables.html .
Serge S,
„--prefix” jest zmienną zdefiniowaną w standardzie GNU - patrz gnu.org/prep/standards/html_node/Directory-Variables.html . nginx przestrzega standardów. Jeśli nie zdefiniujesz katalogu głównego lub lokalizacji w pliku konfiguracyjnym (zależy od --conf-path), prefiks pokaże, gdzie znajduje się „domyślny publiczny katalog główny”. I to nie zależy od systemu operacyjnego, chociaż pakiet dostarczany z dystrybucją systemu operacyjnego może również dostarczyć konfigurację, która z kolei na nowo definiuje „domyślny publiczny katalog główny”.
Serge S,
więc algorytm: poszukaj --conf-path w wyjściu nginx -V . jeśli lokalizacja / lub katalog główny nie został przedefiniowany w konfiguracji - użyj --prefix dla domyślnej lokalizacji katalogu głównego publicznego katalogu głównego.
Serge S,
25

W systemie Mac OS X instalacja nginx z brew powoduje, że katalog domyślny:

/usr/local/var/www

Więc:

root html

znaczy

root /usr/local/var/www/html

Nie ma katalogu HTML, więc musiałby zostać utworzony ręcznie.

freegnu
źródło
1
+1 za wzmiankę o macOS i homebrew. Uważam jednak, że choć root html, index.htmli 50x.htmlkładzie się bezpośrednio /usr/local/var/www. Dlatego wątpię w istnienie htmlfolderu. Czy mógłbyś mi w tym pomóc?
iplus26,
3
„brew info nginx” Podaje docroot wymieniony w wyjściu. Ale określenie „root html” w konfiguracji nginx zmienia docroot dla tej konfiguracji nginx.
freegnu
1
Dla mnie (MAC OS X El Capitan 10.11.5) i brew (1.1.5) katalog był /usr/local/Cellar/nginx/1.10.2_1/html tam, gdzie 1.10.2_1 to wersja nginx.
Yogesh Yadav
2
W mojej instalacji piwnej katalog Cellar to dowiązanie symboliczne: /usr/local/Cellar/nginx/1.12.0_1/html -> ../../../var/www/i nginx -V pokazuje:--prefix=/usr/local/Cellar/nginx/1.12.0_1 podobnie root htmlprzekierowanie przez ten link.
Mark Edington
@ iplus26 katalog html jest już dostępny /usr/local/Cellar/nginx/1.12.2_1/html, myślę, że / usr / local / var / www to tylko link
Kanagavelu Sugumar
21

Możesz po prostu zmapować folder główny nginx na lokalizację swojej witryny:

nano /etc/nginx/sites-enabled/default

wewnątrz pliku domyślnego poszukaj katalogu głównego w znaczniku serwera i zmień domyślny folder swojej witryny, np. moje witryny znajdują się w / var / www

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

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

Kiedy testowałem nginx, apache2 i lighttpd, zmapowałem je wszystkie na mojej stronie internetowej znajdującej się w / var / www . Znalazłem to najlepszy sposób na efektywną ocenę.

Następnie możesz uruchomić / zatrzymać wybrany serwer i zobaczyć, który działa najlepiej.

na przykład

service apache2 stop
service nginx start

Btw, nginx faktycznie jest bardzo szybki!

Waqas
źródło
19

jak powiedziała większość użytkowników, jest to następująca ścieżka:

/usr/share/nginx/html

Jest to domyślna ścieżka, ale możesz ją stworzyć.

wszystko, czego potrzebujesz, to utworzyć je w drzewie głównym serwera WWW i nadać mu uprawnienia „nie 0777” i tylko dla jednego użytkownika i widoczne tylko dla tego użytkownika, ale koniec ścieżki jest widoczny dla wszystkich od końca ścieżki to, co Twoje pliki i foldery będą oglądane publicznie.

na przykład możesz zrobić taki:

home_web/site1/public_html/www/

za każdym razem, gdy tworzysz wirtualny host w Nginx, możesz dostosować własną ścieżkę root, po prostu dodaj coś takiego w bloku serwera:

 server {
    listen  80;
        server_name  yoursite.com;

root /home_web/site1/public_html/www/;
}
Witryna cyfrowa
źródło
Tak masz rację. Właśnie zainstalowałem Nginx na moim centos7 i zauważyłem, że domyślną ścieżką jest /usr/share/nginx/html/folder. Czy jest jakiś powód, aby w ogóle zmieniać tę ścieżkę (ze względów bezpieczeństwa lub z jakichkolwiek innych powodów)? Czy mogę pozostawić go w folderze domyślnym, jeśli mam być jedynym użytkownikiem i jeśli będę hostował tylko 1 stronę internetową?
Neel
Nieważne moje ostatnie pytanie. Skończyło się na tym, że stworzyłem dla niego osobne foldery, ponieważ pomyślałem, że tak będzie lepiej, po prostu chcę dodać różne vhosty do tego zestawu w przyszłości. Tak jest łatwiej. Pozdrawiam :)
Neel
11

Domyślny folder sieciowy dla nginx zależy od tego, jak go zainstalowałeś, ale zwykle znajduje się w następujących lokalizacjach:

/usr/local/nginx/html
/usr/nginx/html
Jacek
źródło
10

W przypadku obrazów Ubuntu i dokerów:

 /usr/share/nginx/html/
DimiDak
źródło
Po prostu ciekawy, powiedz, że nie wiedziałem, jak mogę znaleźć właściwą lokalizację? Istnieje wiele różnych odpowiedzi na to pytanie
Royi Namir,
O ile pamiętam, szukałem „nginx” (coś w rodzaju find / -name nginx) i znalazłem w tym katalogu (lub w jego podkatalogu) dokument, który pojawił się w mojej przeglądarce.
DimiDak,
9

Uruchom polecenie nginx -V i poszukaj --prefix. Użyj tego wpisu, aby zlokalizować domyślne ścieżki.

Jacek
źródło
9

Zrzuć konfigurację:

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

To, co otrzymasz, może być inne, ponieważ zależy od tego, jak nginxzostał skonfigurowany / zainstalowany.

Bibliografia:

Aktualizacja: Istnieje pewne zamieszanie w kwestii, czy / kiedy -Topcja została dodana do nginx. Zostało to udokumentowane na stronie podręcznika użytkownika przez vl-homutov 16 czerwca 2015 r., Który stał się częścią wydania v1.9.2 . Jest nawet wspomniany w informacjach o wydaniu . Ta -Topcja jest obecna w każdym nginxwydaniu od tego czasu, w tym w wersji 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
źródło
nie sądzę, że ta flaga istnieje, być może trzeba zaktualizować odpowiedź
lfender6445,
@ ifender6445, jestem całkowicie zdezorientowany twoim komentarzem. Mam dwa odniesienia do linii w źródle, z których każdy pokazuje -Topcję. Czy w -Tkonkretnej instalacji brakuje opcji? Czy możesz pokazać coś, co uzasadnia twoje roszczenie?
Rubicks,
tak to może być inna wersja nginx? gist.github.com/lfender6445/ed8c5e26db64eba595ae4aaf4d15ee0d
lfender6445
Widzę. wygląda na to, że używam starszej wersji nginx, przepraszam!
lfender6445,
9

Sprawdź plik konfiguracyjny nginx, aby się upewnić. To polecenie grep dla wszystkiego, co jest skonfigurowane na twoim komputerze:

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

na mojej maszynie było to: `root / usr / share / nginx / www;

Thamme Gowda
źródło
8

Na Macu zainstaluj nginx z naparem:

/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;
}  
użytkownik2413075
źródło
8

W przypadku CentOS, Ubuntu i Fedora domyślnym katalogiem jest /usr/share/nginx/html

MucaP
źródło
Chcę z katalogu głównego Nginx var/www/html.
Dhaduk Mitesh,
7

W przypadku AWS EC2 Linux znajdziesz tutaj:

/usr/share/nginx
Vivek Sharma
źródło
5

W moim przypadku było /usr/share/nginx/html

możesz spróbować znaleźć, przeprowadzając wyszukiwanie

find / -name html
Eduardo Dennis
źródło
5

Jeśli korzystasz z Ubuntu 14.04, możesz znaleźć katalog nginx www pod następującą ścieżką:

yusuf@yusuf-he:/usr/share/nginx/html$ pwd
/usr/share/nginx/html
yusuf@yusuf-he:/usr/share/nginx/html$
Yusuf Ibrahim
źródło
Dzięki, zwięzłe i dokładne. Czasami najprostsze wyjaśnienie jest najlepsze.
Dlaczego Ayala
Chcę z katalogu głównego Nginx var/www/html.
Dhaduk Mitesh
5

Możesz go wyszukać, bez względu na to, gdzie go przenieśli (administrator systemu został przeniesiony lub nowsza wersja nginx)

znajdź / -name nginx

Dylan B.
źródło
4

Jeśli chcesz znaleźć publiczny folder główny nginx, który został zdefiniowany podczas kompilacji, możesz po prostu sprawdzić plik access.log.

  1. Otwórz nginx.conf
  2. Znajdź dyrektywę log_format
  3. Wartość log_format to ciąg szablonu, który służy do zapisywania informacji w pliku access.log . Możesz dodać zmienną $ document_root do tego ciągu szablonu, aby zapisać domyślną lokalizację katalogu głównego www w pliku.

Oto przykład z sekcji http nginx.conf ze zmodyfikowaną dyrektywą log_format , katalog_główny_dokumentu $ jest dodawany na początku łańcucha:

    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. Następnie wykonaj kopię zapasową wszystkich plików konfiguracyjnych * .conf w katalogu conf.d i utwórz tam plik konfiguracyjny test.conf z następującymi wierszami:

    server{
        listen 80;
        server_name localhost;
    }
    
    1. Dodaj następujący wiersz do pliku / etc / hosts: 127.0.0.1 localhost

    2. Załaduj ponownie konfigurację nginx: nginx -s reload

    3. Wyślij żądanie GET na adres http: // localhost :curl http://localhost

    4. Sprawdź ostatni ciąg access.log :tail -n 1 /var/log/nginx/access.log

Oto przykładowe dane wyjściowe tego polecenia, gdzie / etc / nginx / html jest domyślnym katalogiem głównym dokumentu zdefiniowanym podczas kompilacji:

    /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
źródło
wygląda na to, że działa, ale mnie nie rozwiązało. Rekord dla * .knexusgroup.com znajduje się na 54.235.222.119, w3.knexusgroup.com, ale nie zarejestrował się dla żadnej domeny <wszystko> .knexusgroup.com. Działa tam, gdzie jest właściwa definicja katalogu głównego, nie jestem w stanie dowiedzieć się, na czym polega problem, dlaczego nie mogę znaleźć katalogu głównego dla żadnej subdomeny, która nie jest dopasowana do żadnej konfiguracji ngiinx.
Ramratan Gupta
4

możesz uzyskać dostęp do pliku config nginx, możesz zobaczyć katalog główny / ścieżkę. w tym domyślnym apache nginx o/var/www/html

Tomnyson
źródło
/var/www/htmljest domyślnym katalogiem głównym apache, a nie nginx.
Ethan Hohensee,
4

* domyślne strony internetowe przydzielone w var / www / html * domyślny serwer konfiguracji 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;
    }
}

* domyślny serwer konfiguracji etc / nginx / nginx.conf

zadowolony..

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;
#   }
#}

domyślne dzienniki dostępu z klientami ip var / log / nginx / ...

użytkownik11793803
źródło
3

Należy zauważyć, że domyślna strona indeksu dla serwera nginx będzie również wyświetlać lokalizację katalogu głównego. Z nginx (1.4.3) na Amazon Linux AMI otrzymujesz:

To jest domyślna strona index.html dystrybuowana wraz z nginx na Amazon Linux AMI. Znajduje się w / usr / share / nginx / html.

Teraz powinieneś umieścić swoją treść w wybranym miejscu i edytować dyrektywę dotyczącą konfiguracji katalogu głównego w pliku konfiguracyjnym nginx /etc/nginx/nginx.conf

uderzenia
źródło
3

Mój nginx na Ubuntu to „wersja nginx: nginx / 1.9.12 (Ubuntu)”, a ścieżka root to / var / www / html /

Informacje o Ubuntu to: Brak dostępnych modułów LSB. Identyfikator dystrybutora: Ubuntu Opis: Ubuntu 16.04 LTS Wydanie: 16.04 Nazwa kodowa: xenial

W rzeczywistości, jeśli właśnie zainstalowałeś nginx na Ubuntu, możesz przejść do „/ etc / nginx / sites-available” i sprawdzić domyślny plik, istnieje konfiguracja taka jak „root / web / root / path / idzie / tutaj”. I tego właśnie szukasz.

Daniel Dong
źródło
3

Możesz go znaleźć w / var / www /, który jest domyślnym katalogiem dla nginx i apache, ale możesz go zmienić. krok 1 przejdź do następującego folderu / etc / nginx / sites-available

krok 2 edytuj plik domyślny, w którym można znaleźć blok serwera, pod którym będzie linia o nazwie root, która określa lokalizację.

gokul kandasamy
źródło
3

w Ubuntu 19.04 znaleźliśmy go na

/ usr / share / nginx / html

Arséne
źródło
2

Dla nginx / 1.4.6 (Ubuntu)

/etc/nginx$ cat /etc/nginx/sites-available/default | grep -i root
- root /usr/share/nginx/html;
lfender6445
źródło
2

W Ubuntu domyślną lokalizacją katalogu głównego Nginx jest /usr/share/nginx/html

Syed Abdul Qadeer
źródło
1

Domyślnie jest związana z prefixopcją configureskryptu podczas kompilacji nginx; oto dziwna próbka z Debiana:

% 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

Następnie domyślna wartość rootjest ustawiona na htmlkatalog (zgodnie z dokumentacją rootdyrektywy ), który znajduje się w środku prefix, co można zweryfikować, patrząc na $document_rootzmienną z prostego pliku konfiguracyjnego:

# 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

Jednak złe dystrybucje, takie jak Debian, wydają się go nieco modyfikować, aby zapewnić ci dodatkową rozrywkę:

% 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;

Tak więc w tym przypadku Debiana widać, że root jest w końcu ustawiony na /usr/share/nginx/www.

Ale jak widzieliście z przykładową konfiguracją serwera, która służyłaby jej $document_rootwartości przez http, konfiguracja nginx jest na tyle prosta, że ​​można napisać własną konfigurację w ciągu jednego lub dwóch wierszy, określając wymagane, rootaby spełnić dokładne potrzeby.

cnst
źródło
co to znaczy root html;, mam na myśli to, co jest prawdziwą ścieżką?
Ramratan Gupta
1
@RamratanGupta, nie przeczytałeś odpowiedzi? Pierwsze linie wskazują, że ścieżka jest względna względem ustawienia prefiksu czasu kompilacji.
cnst 30.10.17
1

Miałem też ten problem na Digital Ocean, prowadząc witrynę WordPress z nginx.

Moim rozwiązaniem było wykonanie następujących czynności:

  1. Zmodyfikuj /etc/nginx/nginx.confplik za pomocą:
server {
root /var/www/html;
}

Potem musiałem sudo service nginx restart

nginx -Vpolecenie pokazuje również, gdzie znajduje się twój plik konfiguracyjny nginx (mój został wskazany /etc/nginx/nginx.conf)

John C.
źródło
0

Alpine Linux nie ma w ogóle żadnej domyślnej lokalizacji. Plik /etc/nginx/conf.d/default.confmówi:

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

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

Zastąp je linią root /var/www/localhost/htdocswskazującą odpowiedni katalog. Następnie, sudo service nginx restartaby ponownie uruchomić.

Lassi
źródło
1
Nie prawda. Właśnie wypróbowałem najnowszy nginx:alpineobraz i wyświetla zawartość od razu po /usr/share/nginx/htmlwyjęciu z pudełka.
Magicode,
1
To brzmi jak obraz Dockera wykonany przez projekt nginx, który akurat używa Alpine Linux jako podstawowego systemu operacyjnego. Kiedy instalujesz Alpine Linux jako główny system operacyjny i apk add nginxręcznie instalujesz nginx z własnego menedżera pakietów Alpine, dostajesz sytuację opisaną w mojej odpowiedzi (lub tak było, kiedy próbowałem go kilka miesięcy temu).
Lassi