NGinx Default lokasi www publik?

303

Saya telah bekerja dengan Apache sebelumnya, jadi saya sadar bahwa root web publik default biasanya /var/www/.

Saya baru-baru ini mulai bekerja dengan nginx, tetapi sepertinya saya tidak dapat menemukan root web publik default.

Di mana saya dapat menemukan root web publik default untuk nginx?

pengguna456584
sumber

Jawaban:

166

Jika konfigurasi Anda tidak menyertakan root /some/absolute/path;pernyataan, atau itu termasuk yang menggunakan jalur relatif seperti root some/relative/path;, maka jalur yang dihasilkan tergantung pada opsi waktu kompilasi.

Mungkin satu-satunya kasus yang memungkinkan Anda untuk membuat tebakan tentang apa artinya ini bagi Anda adalah, jika Anda mengunduh dan mengkompilasi sumbernya sendiri. Dalam hal itu, jalan akan relatif terhadap apa pun --prefixyang digunakan. Jika Anda tidak mengubahnya, defaultnya adalah /usr/local/nginx. Anda dapat menemukan parameter yang dikompilasi dengan nginx via nginx -V, itu daftar --prefixsebagai yang pertama.

Sejak itu rootdefault direktif untukhtml , ini akan, tentu saja, mengakibatkan /usr/local/nginx/htmlmenjadi jawaban untuk pertanyaan Anda.

Namun, jika Anda menginstal nginx dengan cara lain, semua taruhan dimatikan. Distribusi Anda mungkin menggunakan jalur default yang sama sekali berbeda. Belajar mencari tahu apa jenis default yang digunakan distribusi pilihan Anda untuk berbagai hal adalah tugas lain sepenuhnya.

Gnarfoz
sumber
32
Anda mungkin dapat memberikan petunjuk bahwa Anda dapat menggunakan "nginx -V" (huruf besar V) untuk menemukan argumen konfigurasi yang digunakan untuk mengkompilasi nginx.
kaufholdr
1
@kaufholdr benar Anda akan menemukan --prefix @ Gnarfoz yang disebutkan mirip dengan ini --prefix = / usr / share / nginx
Dung
6
Ini juga tergantung pada OS mana instalasi berada, untuk Amazon Linux, direktori adalah: / usr / share / nginx / html
jeffmcneill
Jalur --prefix tidak selalu benar. Pada instal debian 9 nginx saya path prefix adalah "/ var / www / html" tetapi ternyata path default acutal adalah "/ usr / share / nginx / html". Melihat file konfigurasi default di / etc / nginx / sites-available / default menunjukkan pathnya sama dengan path --prefix. Tetapi file konfigurasi yang terletak di /etc/nginx/conf.d/default.conf mencantumkan root sebagai / usr / share / nginx / html. File default.conf lebih diutamakan daripada file default normal. Pastikan untuk memeriksa kedua file konfigurasi atau Anda mungkin bekerja dengan root yang salah.
Caveman
1
nginx -V 2>&1 | grep --color -o -e '--prefix=[^[:space:]]\+'memberi Anda HOME nginx.
sjas
436

Jika menginstal di Ubuntu menggunakan apt-get, coba /usr/share/nginx/www.

EDIT:

Pada versi yang lebih baru, jalur telah berubah menjadi: /usr/share/nginx/html

EDIT 2019:

Mungkin akan mencoba /var/www/html/index.nginx-debian.htmljuga.

Lufix
sumber
113
nginx 1.4.1 di Ubuntu ada di / usr / share / nginx / html
Nick Desaulniers
Saya baru saja menginstal nginx di Raspberry, direktori defaultnya sama dengan yang ditulis oleh Lufix +1. Pada raspbian diunduh dari apt-get
Mitro
4
Baru saja mengonfirmasi bahwa pada CentOS 7.0, juga / usr / share / nginx / html
djhaskin987
2
Debian apt-get, periksa / etc / nginx / available-sites / default , Saya menemukan path di sana.
Chris.Zou
7
ubuntu 16 /var/www/html/index.nginx-debian.html
don bright
65

Direktori Nginx default pada Debian adalah /var/www/nginx-default.

Anda dapat memeriksa file: /etc/nginx/sites-enabled/default

dan menemukan

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

Root adalah lokasi default.

Babistalikesflyingonrails
sumber
5
Di CentOS, saya menemukan bahwa tidak ada folder / etc / nginx / sites-enabled /. ada /etc/nginx/conf.d/ dan ada dua file server.conf dan virtual.conf memiliki detail server ini. Anda juga bisa memperhatikannya.
Nafis Ahmad
1
Untuk menambahkan komentar Nafis, nama file di direktori conf.d harus diakhiri dengan .conf atau tidak akan diambil.
Ethan Hohensee
1
Ini hanya berlaku jika situs default diaktifkan, dan cocok dengan permintaan. Kalau tidak, root defaultnya adalah html.
OrangeDog
@OrangeDog Bagaimana cara memeriksa apakah default sitediaktifkan?
Timo
1
@Timo jawaban ini mengatakan bagaimana
OrangeDog
44

'root web publik default' dapat ditemukan dari nginx -V output:

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

nilai --prefix adalah jawaban untuk pertanyaan. untuk sampel di atas root adalah / var / lib / nginx

Serge S.
sumber
1
Yap, yang terbaik, dan lintas platform.
Jesse Adelman
Ini tidak selalu benar "--prefix" mungkin digunakan pada beberapa sistem tetapi tidak semua. Saya setuju nginx -V memberi Anda banyak info yang akan membantu melacak di mana file berada, tetapi ini tergantung pada OS. IE pada FreeBSD tidak ada dalam "--prefix" apa pun, tetapi "/ usr / local / www" dan dalam beberapa distro linux juga mungkin mengalami perubahan. Yang terbaik untuk melihat ke konfigurasi.
Mikec
"--prefix" adalah variabel yang ditentukan oleh standar GNU - lihat gnu.org/prep/standards/html_node/Directory-Variables.html .
Serge S
"--prefix" adalah variabel yang ditentukan oleh standar GNU - lihat gnu.org/prep/standards/html_node/Directory-Variables.html . nginx mengikuti standar. Jika Anda tidak mendefinisikan root atau lokasi di file konfigurasi (tergantung pada --conf-path) awalan akan menunjukkan di mana 'root web publik default' berada. Dan itu tidak tergantung pada OS, meskipun paket yang disertakan dengan distribusi OS juga dapat menyediakan konfigurasi yang mendefinisikan kembali 'default web web root' pada gilirannya.
Serge S
jadi algoritma: cari --conf-path di nginx -V output. jika lokasi / atau root tidak didefinisikan ulang dalam konfigurasi - gunakan --prefix untuk lokasi 'default public web root'.
Serge S
25

Pada Mac OS X menginstal nginx with brew membuat direktori default:

/usr/local/var/www

Begitu:

root html

cara

root /usr/local/var/www/html

Tidak ada direktori html sehingga harus dibuat secara manual.

freegnu
sumber
1
+1 untuk menyebutkan macOS dan homebrew. Namun, saya menemukan itu root html, index.htmldan 50x.htmllangsung dimasukkan /usr/local/var/www. Karena itu, saya meragukan keberadaan htmlfolder. Bisakah Anda memberi saya bantuan dengan itu?
iplus26
3
"brew info nginx" Memberikan dokumen yang tercantum dalam output. Tetapi menentukan "root html" dalam konfigurasi nginx mengubah docroot untuk konfigurasi nginx tersebut.
freegnu
1
Bagi saya (MAC OS X El Capitan 10.11.5) dan minuman (1.1.5), direktori adalah /usr/local/Cellar/nginx/1.10.2_1/html tempat 1.10.2_1 adalah versi nginx.
Yogesh Yadav
2
Pada minuman saya menginstal direktori Cellar adalah symlink: /usr/local/Cellar/nginx/1.12.0_1/html -> ../../../var/www/dan nginx -V acara: --prefix=/usr/local/Cellar/nginx/1.12.0_1jadi root htmldialihkan melalui tautan itu.
Mark Edington
@ iplus26 direktori html sudah tersedia /usr/local/Cellar/nginx/1.12.2_1/html, saya pikir / usr / local / var / www hanya sebuah tautan
Kanagavelu Sugumar
21

Anda cukup memetakan folder root nginx ke lokasi situs web Anda:

nano /etc/nginx/sites-enabled/default

di dalam file default , cari root di tag server dan ubah folder default situs web Anda, misalnya situs web saya di / var / www

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

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

Ketika saya mengevaluasi nginx, apache2 dan lighttpd, saya memetakan semuanya ke situs web saya di / var / www . Saya menemukan ini cara terbaik untuk mengevaluasi secara efisien.

Kemudian Anda dapat memulai / menghentikan server pilihan Anda dan melihat mana yang berkinerja terbaik.

misalnya

service apache2 stop
service nginx start

Btw, nginx sebenarnya sangat cepat!

Waqas
sumber
19

seperti yang dikatakan sebagian besar pengguna di sini, ia berada di bawah jalur ini:

/usr/share/nginx/html

Ini adalah jalur default, tetapi Anda dapat membuatnya sendiri.

yang Anda butuhkan hanyalah membuat satu di root tree server web dan memberikannya beberapa izin "bukan 0777" dan hanya untuk satu pengguna dan dapat dilihat oleh pengguna itu saja, tetapi ujung jalan terlihat oleh semua orang sejak ujung jalan. apa file dan folder Anda akan dilihat oleh publik.

misalnya, Anda dapat membuat yang seperti ini:

home_web/site1/public_html/www/

setiap kali Anda membuat host virtual di Nginx, Anda dapat menyesuaikan jalur root Anda sendiri, cukup tambahkan sesuatu seperti ini di blok server Anda:

 server {
    listen  80;
        server_name  yoursite.com;

root /home_web/site1/public_html/www/;
}
Situs digital
sumber
Ya kamu benar. Saya baru saja menginstal Nginx pada centos7 saya dan saya perhatikan bahwa path default adalah /usr/share/nginx/html/folder. Apakah ada alasan untuk mengubah jalan itu sama sekali (untuk keamanan atau alasan lain)? Apakah saya tetap membiarkannya di folder default jika saya akan menjadi satu-satunya pengguna dan jika saya hanya akan meng-host 1 situs web di dalamnya?
Neel
Lupakan pertanyaan terakhir saya. Saya akhirnya membuat folder terpisah untuk itu karena saya pikir lebih baik dengan cara ini hanya karena saya ingin menambahkan vhosts berbeda untuk pengaturan ini di masa depan. Lebih mudah seperti ini. Cheers :)
Neel
11

Folder web default untuk nginx tergantung pada bagaimana Anda menginstalnya, tetapi biasanya di lokasi ini:

/usr/local/nginx/html
/usr/nginx/html
Mendongkrak
sumber
10

Untuk gambar Ubuntu dan buruh pelabuhan:

 /usr/share/nginx/html/
DimiDak
sumber
Hanya ingin tahu, katakanlah saya tidak tahu itu, bagaimana saya menemukan lokasi yang tepat? Ada banyak jawaban berbeda untuk hal ini di luar sana
Royi Namir
Sejauh yang saya ingat saya mencari "nginx" (sesuatu seperti find / -nama nginx) dan menemukan di dalam direktori ini (atau dalam subdirektori) dokumen yang muncul di browser saya.
DimiDak
9

Jalankan perintah nginx -V dan cari --prefix. Gunakan entri itu untuk menemukan jalur default Anda.

Mendongkrak
sumber
9

Buang konfigurasi:

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

Apa yang Anda dapatkan mungkin berbeda karena itu tergantung pada bagaimana Anda nginxdikonfigurasikan / diinstal.

Referensi:

Pembaruan: Ada beberapa kebingungan tentang masalah jika / ketika -Topsi ditambahkan nginx. Itu didokumentasikan di halaman manual oleh vl-homutov pada 2015 16 Juni, yang menjadi bagian dari rilis v1.9.2 . Itu bahkan disebutkan dalam catatan rilis . The -Tpilihan telah hadir di setiap nginxrilis sejak, termasuk satu yang tersedia di 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
rubik
sumber
saya tidak berpikir bendera ini ada, Anda mungkin perlu memperbarui jawabannya
lfender6445
@ ifender6445, saya benar-benar bingung dengan komentar Anda. Saya punya dua referensi ke baris di sumber, masing-masing menunjukkan -Topsi. Apakah -Topsi hilang dari instalasi khusus Anda? Bisakah Anda menunjukkan sesuatu untuk mendukung klaim Anda?
rubi
ya itu, mungkin versi nginx yang berbeda? gist.github.com/lfender6445/ed8c5e26db64eba595ae4aaf4d15ee0d
lfender6445
saya melihat. sepertinya saya menggunakan versi nginx yang lebih lama, permintaan maaf!
lfender6445
9

Lihatlah ke file konfigurasi nginx untuk memastikan. Perintah ini menangkap apa pun yang dikonfigurasi pada Mesin Anda:

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

pada mesin saya itu: `root / usr / share / nginx / www;

Thamme Gowda
sumber
8

Di Mac instal nginx dengan 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;
}  
pengguna2413075
sumber
8

Untuk CentOS, Ubuntu dan Fedora, direktori defaultnya adalah /usr/share/nginx/html

MucaP
sumber
Saya ingin nginx root dari var/www/html.
Dhaduk Mitesh
7

Untuk AWS EC2 Linux Anda akan menemukan di sini:

/usr/share/nginx
Vivek Sharma
sumber
5

Dalam kasus saya itu masuk /usr/share/nginx/html

Anda dapat mencoba menemukan dengan melakukan pencarian

find / -name html
Eduardo Dennis
sumber
5

Jika Anda menggunakan Ubuntu 14.04 Anda dapat menemukan direktori nginx www di jalur berikut:

yusuf@yusuf-he:/usr/share/nginx/html$ pwd
/usr/share/nginx/html
yusuf@yusuf-he:/usr/share/nginx/html$
Yusuf Ibrahim
sumber
Terima kasih, singkat dan akurat. Terkadang penjelasan yang paling sederhana adalah yang terbaik.
WhyAyala
Saya ingin nginx root dari var/www/html.
Dhaduk Mitesh
5

Anda dapat mencarinya, di mana pun mereka memindahkannya (admin sistem pindah atau versi nginx yang lebih baru)

temukan / -nama nginx

Dylan B
sumber
4

Jika Anda perlu mencari tahu folder root publik nginx yang ditentukan pada waktu kompilasi, Anda bisa memeriksa file access.log Anda.

  1. Buka nginx.conf
  2. Temukan arahan log_format
  3. Nilai log_format adalah string templat yang digunakan untuk menulis informasi ke file access.log . Anda bisa menambahkan variabel $ document_root ke string template ini untuk mencatat lokasi root www default ke file.

Berikut adalah contoh dari bagian http nginx.conf dengan modifikasi log_format direktif , $ document_root ditambahkan pada awal string:

    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. Kemudian buat cadangan semua file konfigurasi * .conf di direktori conf.d dan buat file konfigurasi di sana, test.conf dengan baris berikut:

    server{
        listen 80;
        server_name localhost;
    }
    
    1. Tambahkan baris berikut ke file / etc / hosts: 127.0.0.1 localhost

    2. Muat ulang konfigurasi nginx: nginx -s reload

    3. Kirim permintaan GET ke http: // localhost :curl http://localhost

    4. Periksa string terakhir access.log :tail -n 1 /var/log/nginx/access.log

Berikut adalah contoh output dari perintah ini, di mana / etc / nginx / html adalah root dokumen default yang didefinisikan pada waktu kompilasi:

    /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
sumber
tampak bekerja, tetapi tidak diselesaikan saya, Sebuah catatan untuk * .knexusgroup.com pada 54.235.222.119, w3.knexusgroup.com tetapi tidak log untuk setiap domain <apapun> .knexusgroup.com. Ia bekerja di mana ada definisi yang tepat dari dir root, saya tidak dapat menemukan apa masalahnya, mengapa saya tidak dapat menemukan root untuk setiap sub domain yang tidak cocok dengan konfigurasi ngiinx.
Ramratan Gupta
4

Anda dapat mengakses file config nginx, Anda dapat melihat root / path. dalam default ini dari nginx apache di/var/www/html

Tomyson
sumber
/var/www/htmladalah root web default untuk apache, bukan nginx.
Ethan Hohensee
4

* halaman web bawaan dialokasikan dalam var / www / html * server konfigurasi default dll / nginx / situs / tersedia / 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;
    }
}

* Server konfigurasi standar, etc / nginx / nginx.conf

kandungan..

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

log akses default dengan klien ip var / log / nginx / ...

pengguna11793803
sumber
3

Hanya untuk dicatat bahwa halaman indeks default untuk server nginx juga akan menampilkan lokasi root. Dari nginx (1.4.3) di Amazon Linux AMI, Anda mendapatkan yang berikut:

Ini adalah halaman index.html default yang didistribusikan dengan nginx di Amazon Linux AMI. Itu terletak di / usr / share / nginx / html.

Anda sekarang harus meletakkan konten Anda di lokasi pilihan Anda dan mengedit direktif konfigurasi root dalam file konfigurasi nginx /etc/nginx/nginx.conf

jboles
sumber
3

Nginx saya di Ubuntu adalah "nginx versi: nginx / 1.9.12 (Ubuntu)" dan path root adalah / var / www / html /

Info Ubuntu adalah: Tidak ada modul LSB yang tersedia. ID Distributor: Ubuntu Keterangan: Ubuntu 16.04 LTS Rilis: 16.04 Codename: xenial

Sebenarnya, jika Anda baru saja menginstal nginx di Ubuntu, maka Anda dapat pergi ke "/ etc / nginx / sites-available" dan memeriksa file default, ada konfigurasi seperti "root / web / root / path / goes / here". Dan itulah yang Anda cari.

Daniel Dong
sumber
3

Anda dapat menemukannya di / var / www / itu adalah direktori default untuk nginx dan apache tetapi Anda dapat mengubahnya. langkah 1 pergi ke folder berikut / etc / nginx / sites-available

langkah 2 edit file default di bahwa Anda dapat menemukan blok server di bawah bahwa akan ada baris bernama root yang menentukan lokasi.

gokul kandasamy
sumber
3

di ubuntu 19.04, kami menemukannya di

/ usr / share / nginx / html

Arséne
sumber
2

Untuk nginx / 1.4.6 (Ubuntu)

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

Di Ubuntu, lokasi direktori root Nginx default adalah /usr/share/nginx/html

Syed Abdul Qadeer
sumber
1

Default terkait dengan prefixopsi configureskrip saat nginx dikompilasi; inilah beberapa contoh aneh dari 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

Selanjutnya, nilai default rootadalah set ke htmldirektori (sesuai dokumentasi dari rootdirektif ), yang kebetulan berada dalam prefix, seperti dapat diverifikasi dengan melihat $document_rootvariabel dari file konfigurasi yang sederhana:

# 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

Namun, distribusi jahat seperti Debian tampaknya sedikit memodifikasinya, untuk membuat Anda tetap terhibur:

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

Jadi, pada instance Debian ini, Anda dapat melihat bahwa root akhirnya disetel ke /usr/share/nginx/www.

Tetapi seperti yang Anda lihat dengan contoh konfigurasi server yang akan melayani $document_rootnilainya di atas http, mengkonfigurasi nginx cukup sederhana sehingga Anda dapat menulis konfigurasi sendiri dalam satu atau dua baris, menentukan yang diperlukan rootuntuk memenuhi kebutuhan Anda yang sebenarnya.

cnst
sumber
apa artinya root html;, maksud saya apa jalan yang sebenarnya?
Ramratan Gupta
1
@RamratanGupta, apakah Anda tidak membaca jawabannya? Baris pertama menguraikan bahwa path relatif ke pengaturan awalan waktu kompilasi.
cnst
1

Saya juga memiliki masalah ini pada Digital Ocean menjalankan situs web WordPress dengan nginx.

Solusi saya adalah melakukan hal berikut:

  1. Ubah /etc/nginx/nginx.conffile dengan yang berikut ini:
server {
root /var/www/html;
}

Saya kemudian harus sudo service nginx restart

nginx -Vperintah juga menunjukkan Anda di mana file konfigurasi nginx Anda juga berada (milik saya diarahkan /etc/nginx/nginx.conf)

John C
sumber
0

Alpine Linux tidak memiliki lokasi default sama sekali. File tersebut /etc/nginx/conf.d/default.confmengatakan:

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

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

Ganti mereka dengan garis yang ingin root /var/www/localhost/htdocsmenunjuk ke direktori yang Anda inginkan. Kemudian sudo service nginx restartrestart.

Lassi
sumber
1
Tidak benar. Baru saja mencoba nginx:alpinegambar terbaru dan menyajikan konten dari /usr/share/nginx/htmlluar kotak.
Jimbali
1
Itu terdengar seperti gambar Docker yang dibuat oleh proyek nginx yang kebetulan menggunakan Alpine Linux sebagai OS yang mendasarinya. Ketika Anda menginstal Alpine Linux sebagai OS utama Anda dan melakukan apk add nginxsecara manual menginstal nginx dari manajer paket Alpine sendiri, Anda mendapatkan situasi yang dijelaskan dalam jawaban saya (atau itulah yang terjadi ketika saya mencobanya beberapa bulan yang lalu).
Lassi