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?

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.


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.


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.


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


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.


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!


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

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

10

W przypadku obrazów Ubuntu i dokerów:

 /usr/share/nginx/html/

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.


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

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,


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;


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

8

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


Chcę z katalogu głównego Nginx var/www/html.
— Dhaduk Mitesh,


5

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

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

find / -name html

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$

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


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" "-"

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


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


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


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.


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ę.



2

Dla nginx / 1.4.6 (Ubuntu)

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


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.


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)


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ć.


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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.