NGinx Varsayılan herkese açık www konumu?


303

Daha önce Apache ile çalıştım, bu yüzden varsayılan genel web kökünün tipik olduğunu biliyorum /var/www/.

Son zamanlarda nginx ile çalışmaya başladım, ancak varsayılan genel web kökünü bulamıyorum.

Nginx için varsayılan genel web kökünü nerede bulabilirim?

Yanıtlar:


166

Yapılandırmanız bir root /some/absolute/path;ifade içermiyorsa veya benzer bir yol kullanan bir ifade içeriyorsa root some/relative/path;, ortaya çıkan yol derleme zamanı seçeneklerine bağlıdır.

Muhtemelen kaynağı kendiniz indirip derlediyseniz bunun sizin için ne anlama geldiğine dair eğitimli bir tahmin yapmanıza izin verecek tek durum . Bu durumda, yollar --prefixkullanılan her şeye göre olacaktır . Eğer değiştirmediyseniz, varsayılan olarak /usr/local/nginx. Nginx'in derlendiği parametreleri bulabilirsiniz , ilkini nginx -Vlisteler --prefix.

Yana üzere direktif varsayılan bu, tabii ki, neden olacaktır Sorunuzun cevabı olma.roothtml/usr/local/nginx/html

Ancak, nginx'i başka bir şekilde kurduysanız, tüm bahisler kapalıdır. Dağıtımınız tamamen farklı varsayılan yollar kullanabilir. Seçim dağılımınızın şeyler için ne tür bir varsayılan kullandığını anlamayı öğrenmek başka bir görevdir.


32
Belki nginx derlemek için kullanılan yapılandırma bağımsız değişkenlerini keşfetmek için "nginx -V" (büyük harf V) kullanabileceğiniz bir ipucu verebilir.
kaufholdr

1
@kaufholdr doğru --prefix @ Gnarfoz'un buna benzediğini göreceksiniz --prefix = / usr / share / nginx
Gübre

6
Bu aynı zamanda kurulumun hangi işletim sistemine bağlı olduğuna da bağlıdır, Amazon Linux için dizin: / usr / share / nginx / html
jeffmcneill 12:08

--Prefix yolu her zaman doğru değildir. Benim debian 9 nginx kurulumunda önek yolu "/ var / www / html" idi, ama ortaya çıktığı gibi acutal varsayılan yol "/ usr / share / nginx / html" idi. / Etc / nginx / sites-available / default içindeki varsayılan yapılandırma dosyasına bakıldığında yol --prefix yolu ile aynıdır. Ancak /etc/nginx/conf.d/default.conf konumunda bulunan yapılandırma dosyası kökü / usr / share / nginx / html olarak listeledi. Default.conf dosyası, normal varsayılan dosyadan önce gelir. Her iki yapılandırma dosyasını da kontrol ettiğinizden emin olun, aksi halde yanlış kök ile çalışıyor olabilirsiniz.
Caveman

1
nginx -V 2>&1 | grep --color -o -e '--prefix=[^[:space:]]\+'size nginx HOME'u verir.
sjas

437

Apt-get kullanarak Ubuntu'ya yükleme yapmayı deneyin /usr/share/nginx/www.

DÜZENLE:

Daha yeni sürümlerde yol şu şekilde değiştirildi: /usr/share/nginx/html

2019 DÜZENLEME:

Denemek /var/www/html/index.nginx-debian.htmlde olabilir.


113
Ubuntu'da nginx 1.4.1 / usr / share / nginx /
html'de

Az önce Ahududu üzerine nginx yükledim, varsayılan dizin aynı Lufix +1 tarafından yazılmış. Raspbian indir apt-get
Mitro

4
Sadece CentOS 7.0, / usr / share / nginx / html olduğunu da
doğruladı

2
Debian apt-get, check / etc / nginx / available-sites / default there Oradaki yolu buldum.
Chris.Zou

7
ubuntu 16 /var/www/html/index.nginx-debian.html
don parlak

65

Debian varsayılan Nginx dizinidir /var/www/nginx-default.

Dosyayı kontrol edebilirsiniz: /etc/nginx/sites-enabled/default

ve bul

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

Kök varsayılan konumdur.


5
CentOS'ta / etc / nginx / sites-etkin / klasör olmadığını buldum. /etc/nginx/conf.d/ ve iki dosya server.conf ve virtual.conf bu sunucu ayrıntılarına sahiptir. Buna da bakabilirsiniz.
Nafis Ahmad

1
Nafis'in yorumuna eklemek için, conf.d dizinindeki dosya adı .conf ile bitmelidir, aksi takdirde alınmazlar.
Ocak 17'de Ethan Hohensee

1
Bu yalnızca varsayılan site etkinse ve istekle eşleşiyorsa geçerlidir. Aksi takdirde, varsayılan kökü html.
OrangeDog

@OrangeDog default siteEtkin olup olmadığını nasıl kontrol edebilirim ?
Timo

1
@Timo bu cevap nasıl diyor
OrangeDog

44

'varsayılan genel web kökü' nginx -V çıktısından bulunabilir:

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 değeri sorunun cevabıdır. kök üzerindeki örnek için / var / lib / nginx


1
Evet, en iyi ve çapraz platform.
Jesse Adelman

Bu her zaman doğru değildir "--prefix" bazı sistemlerde kullanılabilir ancak hepsi değil. Nginx -V, dosyaların nerede olduğunu izlemenize yardımcı olacak birçok bilgi veriyor, ancak bu işletim sistemine bağlı. FreeBSD'de IE "--prefix" ne olursa olsun değil, "/ usr / local / www" ve bazı linux dağıtımlarında da bozabilir. Yapılandırmaya bakmak en iyisidir.
Mikec

"--prefix" GNU standardı tarafından tanımlanan değişkendir - bkz. gnu.org/prep/standards/html_node/Directory-Variables.html .
Serge S

"--prefix" GNU standardı tarafından tanımlanan değişkendir - bkz. gnu.org/prep/standards/html_node/Directory-Variables.html . nginx standartları takip eder. Yapılandırma dosyasında kök veya konum tanımlamazsanız (--conf-path'a bağlıdır) önek, 'varsayılan genel web kökünün' bulunduğu yeri gösterir. Bu, işletim sistemine bağlı değildir, ancak bir işletim sistemi dağıtımı ile birlikte verilen bir paket de 'varsayılan genel web kökünü' yeniden tanımlayan bir yapılandırma sağlayabilir.
Serge S

böylece algoritması: için göz --conf-yolu içinde nginx -V çıktı. eğer konum / veya kök yapılandırma içinde yeniden tanımlanması değil - kullanım prefix için konum 'genel web kök varsayılan'.
Serge S

25

Mac OS X'te nginx'i demleme ile kurmak varsayılan dizini yapar:

/usr/local/var/www

Yani:

root html

anlamına geliyor

root /usr/local/var/www/html

Manuel olarak oluşturulması gereken bir html dizini yoktur.


1
MacOS ve homebrew'dan bahsettiği için +1. Ancak, ben bu olsa buldum root html, index.htmlve 50x.htmldoğrudan konur /usr/local/var/www. Bu nedenle, htmlklasör var olduğundan şüphe ediyorum . Bana bu konuda yardım edebilir misin?
iplus26

3
"brew info nginx" Çıktıda listelenen docroot'u verir. Ancak bir nginx konfigürasyonunda "root html" belirtilmesi, o nginx konfigürasyonunun docroot'unu değiştirir.
freegnu

1
Benim için (MAC OS X El Capitan 10.11.5) ve demlemek (1.1.5), dizin /usr/local/Cellar/nginx/1.10.2_1/html 1.10.2_1'nin nginx sürümü olduğu yerdi.
Yogesh Yadav

2
Benim demlemek Cellar dizini bir symlink yükleyin: /usr/local/Cellar/nginx/1.12.0_1/html -> ../../../var/www/ve nginx -V gösterir:--prefix=/usr/local/Cellar/nginx/1.12.0_1 yani root htmlbu bağlantı üzerinden yönlendirilir.
Mark Edington

@ iplus26 html dizini zaten mevcut /usr/local/Cellar/nginx/1.12.2_1/html, sanırım / usr / local / var / www sadece bir bağlantı
Kanagavelu Sugumar

21

Nginx'in kök klasörünü web sitenizin konumuna eşleyebilirsiniz :

nano /etc/nginx/sites-enabled/default

varsayılan dosya için göz kökü sunucu etiketi ve değişim web sitenizin varsayılan klasör, mesela benim web siteleri de / var / www

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

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

Nginx, apache2 ve lighttpd'yi değerlendirirken hepsini / var / www adresindeki web siteme eşledim . Bunu verimli bir şekilde değerlendirmenin en iyi yolunu buldum.

Ardından istediğiniz sunucuyu başlatabilir / durdurabilir ve hangisinin en iyi performansı gösterdiğini görebilirsiniz.

Örneğin

service apache2 stop
service nginx start

Btw, nginx aslında çok hızlı!


19

Burada çoğu kullanıcının söylediği gibi, bu yol altında:

/usr/share/nginx/html

Bu varsayılan yoldur, ancak yine de kendinizinkini yapabilirsiniz.

tek ihtiyacınız olan web sunucusu kök ağacında bir tane oluşturmak ve "0777 değil" bazı izinler vermek ve sadece bir kullanıcı için ve sadece o kullanıcı tarafından görülebilir, ancak yolun sonu yolun sonundan beri herkes tarafından görülebilir dosyalarınızın ve klasörlerinizin herkes tarafından görüntüleneceği şeydir.

örneğin, aşağıdakini yapabilirsiniz:

home_web/site1/public_html/www/

Nginx'te sanal bir ana bilgisayar oluşturduğunuzda kendi kök yolunuzu özelleştirebilirsiniz, sadece sunucu bloğunuza böyle bir şey ekleyin:

 server {
    listen  80;
        server_name  yoursite.com;

root /home_web/site1/public_html/www/;
}

Evet, haklısın. Nginx'i centos7'ye yeni kurdum ve varsayılan yolun /usr/share/nginx/html/klasör olduğunu fark ettim . Bu yolu değiştirmenin bir nedeni var mı (güvenlik veya başka nedenlerle)? Tek kullanıcı olacaksam ve sadece 1 web sitesini barındıracaksam varsayılan klasörde bırakmak uygun mudur?
Neel

Son sorumu boşver. Bunun için ayrı klasörler oluşturmaya başladım çünkü bu şekilde daha iyi olduğunu düşündüm, ancak bu kurulumda gelecekte farklı vhosts eklemek istiyorum. Bu şekilde daha kolay. Şerefe :)
Neel

11

Nginx için varsayılan web klasörü, onu nasıl yüklediğinize bağlıdır, ancak normalde bu konumlarda bulunur:

/usr/local/nginx/html
/usr/nginx/html

10

Ubuntu ve docker görüntüleri için:

 /usr/share/nginx/html/

Sadece merak ettim, bilmiyordum, doğru yeri nereden bulabilirdim? Bu konuda çok farklı cevaplar var
Royi Namir

Hatırladığım kadarıyla "nginx" i aradım (find / -name nginx gibi bir şey) ve bu dizinin içinde (veya alt dizininde) tarayıcımda görünen belgeyi buldum.
DimiDak

10

Emin olmak için nginx yapılandırma dosyasına bakın. Bu komut, Makinenizde yapılandırılanlar için açılır:

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

benim makinemde:root /usr/share/nginx/www;


9

Komutu çalıştırın nginx -V ve --prefix. Varsayılan yollarınızı bulmak için bu girişi kullanın.


9

Yapılandırmayı döküm:

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

Aldığınız şey farklı olabilir, çünkü nginx yapılandırdığınız / kurulduğunuza .

Referanslar:

Güncelleme: -TSeçeneğin eklenip eklenmediği / ne zaman ekleneceği konusunda bazı karışıklıklar var nginx. Bu, v1.9.2 sürümünün bir parçası olan 16 Haziran 2015 tarihinde vl-homutov tarafından kılavuz sayfasında belgelenmiştir . Sürüm notlarında bile bahsedilmiştir . Bu seçenek, Ubuntu 16.04.1 LTS'de mevcut olanlar da dahil olmak üzere her sürümde mevcut:-Tnginx

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

sanırım bu bayrak var, cevabı güncellemeniz gerekebilir
lfender6445

@ ifender6445, yorumunuzla iyice kafam karıştı. Her satır -Tseçeneği gösteren, kaynaktaki satırlara iki referansım var . Mı -T, yüklemenizi eksik seçenek? İddianızı doğrulayacak bir şey gösterebilir misiniz?
16'da

evet, nginx'in farklı bir versiyonu olabilir mi? gist.github.com/lfender6445/ed8c5e26db64eba595ae4aaf4d15ee0d
lfender6445

anlıyorum. nginx, özür dilerim eski bir sürümünü kullanıyorum gibi görünüyor!
lfender6445

8

Mac'te nginx'i demleme ile kurun:

/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

CentOS, Ubuntu ve Fedora için varsayılan dizin /usr/share/nginx/html


Ben nginx kökü istiyorum var/www/html.
Dhaduk Mitesh


5

Benim durumumda /usr/share/nginx/html

bir arama yaparak bulmayı deneyebilirsiniz

find / -name html

5

Ubuntu 14.04 üzerindeyseniz, nginx www dizinini aşağıdaki yolda bulabilirsiniz:

yusuf@yusuf-he:/usr/share/nginx/html$ pwd
/usr/share/nginx/html
yusuf@yusuf-he:/usr/share/nginx/html$

Teşekkürler, kısa özlü ve doğru. Bazen en basit açıklama en iyisidir.
WhyAyala

Ben nginx kökü istiyorum var/www/html.
Dhaduk Mitesh

5

Nereye taşıdıklarına bakılmaksızın onu arayabilirsiniz (sistem yöneticisi taşındı veya nginx'in daha yeni sürümü)

find / -name nginx


4

Derleme zamanında tanımlanan nginx public root klasörünü bulmanız gerekiyorsa, access.log dosyanızı kontrol edebilirsiniz.

  1. Nginx.conf dosyasını açın
  2. Log_format yönergesini bulun
  3. Log_format değeri , access.log dosyasına bilgi yazmak için kullanılan bir şablon dizesidir . Varsayılan www kök konumunu bir dosyaya kaydetmek için bu şablon dizesine $ document_root değişkeni ekleyebilirsiniz .

Nginx.conf'un http bölümünden değiştirilmiş log_format yönergesiyle bir örnek verilmiştir , $ document_root dizenin başına eklenir:

    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. Daha sonra conf.d dizinindeki tüm yapılandırma dosyalarını * .conf yedekleyin ve aşağıdaki satırlarla test.conf yapılandırma dosyasını oluşturun :

    server{
        listen 80;
        server_name localhost;
    }
    
    1. / Etc / hosts dosyasına aşağıdaki satırı ekleyin: 127.0.0.1 localhost

    2. Nginx yapılandırmasını yeniden yükle: nginx -s reload

    3. Http: // localhost : adresine GET isteği gönderincurl http://localhost

    4. Access.log dosyasının son dizesini kontrol edin :tail -n 1 /var/log/nginx/access.log

İşte bu komutun örnek çıktısı, burada / etc / nginx / html , derleme zamanında tanımlanan varsayılan belge köküdür:

    /etc/nginx/html 127.0.0.1 - - [15/Mar/2017:17:12:25 +0200] "GET / HTTP/1.1" 404 169 "-" "curl/7.35.0" "-"

işe yarıyor gibi görünüyor, ancak beni çözmedi, * .knexusgroup.com için bir kayıt 54.235.222.119, w3.knexusgroup.com üzerinde, ancak herhangi bir etki alanı <herhangi bir şey .knexusgroup.com için kayıt olmadı. Kök dir düzgün tanımı olduğu yerde çalışır, neyin sorun olduğunu, neden herhangi bir ngiinx yapılandırma ile eşleşmeyen herhangi bir alt etki alanı için kök bulamıyorum anlayamıyorum.
Ramratan Gupta

4

nginx dosya konfigürasyonuna erişebilir, root / yol görebilirsiniz. bu varsayılan nginx apache/var/www/html


/var/www/htmlnginx için değil, apache için varsayılan web köküdür.
Ethan Hohensee

4

* var / www / html'de ayrılmış varsayılan sayfalar web * varsayılan yapılandırma sunucusu vb. / 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;
    }
}

* varsayılan yapılandırma sunucusu vb. / nginx / nginx.conf

içerik ..

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 istemcileri ile varsayılan erişim günlükleri var / log / nginx / ...


3

Sadece nginx sunucusunun varsayılan dizin sayfasının da kök konumunu görüntüleyeceğini unutmayın. Amazon Linux AMI'deki nginx (1.4.3) sürümünden şunları elde edersiniz:

Bu, Amazon Linux AMI'de nginx ile dağıtılan varsayılan index.html sayfasıdır. / Usr / share / nginx / html dizininde bulunur.

Şimdi içeriğinizi istediğiniz bir yere koymalı ve /etc/nginx/nginx.conf nginx yapılandırma dosyasında kök yapılandırma yönergesini düzenlemelisiniz


3

Ubuntu'daki nginx'im "nginx sürümü: nginx / 1.9.12 (Ubuntu)" ve kök yolu / var / www / html /

Ubuntu bilgileri: LSB modülü mevcut değil. Distribütör Kimliği: Ubuntu Açıklama: Ubuntu 16.04 LTS Sürüm: 16.04 Kod adı: xenial

Aslında, Ubuntu'ya nginx'i yeni yüklediyseniz, "/ etc / nginx / sites-available" adresine gidebilir ve varsayılan dosyayı kontrol edebilirsiniz, "root / web / root / path / goes / here" gibi bir yapılandırma vardır. Ve aradığınız da budur.


3

Bunu nginx ve apache için varsayılan dizin olan / var / www / dizininde bulabilirsiniz, ancak değiştirebilirsiniz. adım 1 aşağıdaki klasöre gidin / etc / nginx / sites-available

2. adım, konumu tanımlayan kök olarak adlandırılan satırın altında bir sunucu bloğu bulabileceğiniz varsayılan dosyayı düzenleyin.



2

Nginx / 1.4.6 için (Ubuntu)

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


1

Varsayılan, nginx derlendiğinde komut dosyasının prefixseçeneğiyle ilgilidir configure; İşte Debian'dan garip bir örnek:

% 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

Daha sonra, varsayılan değeri rootolan ayarlı htmldizine (uyarınca belgelenmesi rootdirektifi dahilinde olur,) prefixbakarak doğrulanabilir olarak, $document_rootbasit bir yapılandırma dosyasından değişken:

# 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

Ancak, Debian gibi kötü dağıtımlar, sizi daha fazla eğlendirmek için biraz değiştiriyor gibi görünüyor:

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

Bu nedenle, Debian'ın bu örneğinde, kökün sonunda olarak ayarlandığını görebilirsiniz /usr/share/nginx/www.

Ancak, $document_roothttp üzerinden değerine hizmet edecek örnek sunucu yapılandırmasında gördüğünüz gibi , nginx'i yapılandırmak root, tam gereksinimlerinizi karşılamak için gerekenleri belirterek, tek bir veya iki satırda kendi yapılandırmanızı yazabileceğiniz kadar basittir .


bu ne anlama geliyor root html;, yani gerçek yol nedir?
Ramratan Gupta

1
@RamratanGupta, cevabı okumadınız mı? İlk satırlar, yolun derleme zamanı önek ayarına göre olduğunu belirtir.
cnst

1

Ayrıca nginx ile bir WordPress web sitesi çalıştıran Digital Ocean'da bu sorunu yaşadım.

Benim çözümüm aşağıdakileri yapmaktı:

  1. Değiştir /etc/nginx/nginx.confAşağıdakilerden dosyayı:
server {
root /var/www/html;
}

Sonra zorunda kaldım sudo service nginx restart

nginx -Vkomutu ayrıca nginx yapılandırma dosyanızın da nerede bulunduğunu gösterir (mayın işaret edildi /etc/nginx/nginx.conf)


1

Alpine Linux'un varsayılan konumu yoktur. Dosya /etc/nginx/conf.d/default.confdiyor ki:

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

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

root /var/www/localhost/htdocsBunları, istediğiniz dizine işaret edecek bir çizgi ile değiştirin . Sonra sudo service nginx restartyeniden başlatmak için.


1
Doğru değil. Sadece en son nginx:alpinegörüntüyü denedim /usr/share/nginx/htmlve kutudan çıkan içeriği sunuyor .
Jimbali

1
Bu nginx projesi tarafından yapılan ve sadece temel işletim sistemi olarak Alpine Linux kullanıyor olan bir Docker görüntüsü gibi geliyor. Alpine Linux'u ana işletim sisteminiz olarak apk add nginxyüklediğinizde ve Alpine'nin kendi paket yöneticisinden nginx'i manuel olarak yüklediğinizde, cevabımda açıklanan durumu alıyorsunuz (ya da zaten birkaç ay önce denediğimde).
Lassi
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.