Apa yang sedang terjadi?
Anda harus menggunakan Debian atau Ubuntu, karena iblis sites-available
/ sites-enabled
logika tidak digunakan oleh kemasan hulu nginx dari http://nginx.org/packages/ .
Dalam kedua kasus, keduanya diimplementasikan sebagai konvensi konfigurasi dengan bantuan include
arahan standar di /etc/nginx/nginx.conf
.
Berikut cuplikan dari /etc/nginx/nginx.conf
paket hulu resmi nginx dari nginx.org:
http {
…
include /etc/nginx/conf.d/*.conf;
}
Berikut cuplikan /etc/nginx/nginx.conf
dari Debian / Ubuntu :
http {
…
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
Jadi, dari sudut pandang NGINX, satu-satunya perbedaan adalah bahwa file dari conf.d
dapat diproses lebih cepat, dan, dengan demikian, jika Anda memiliki konfigurasi yang secara diam-diam bertentangan satu sama lain, maka dari yang conf.d
mungkin lebih diutamakan daripada yang masuk sites-enabled
.
Praktik Terbaik Adalah conf.d
.
Anda harus menggunakan /etc/nginx/conf.d
, karena itu adalah konvensi standar, dan harus bekerja di mana saja.
Jika Anda perlu menonaktifkan situs, cukup ganti nama file menjadi tidak lagi memiliki .conf
akhiran, sangat mudah, langsung dan bukti kesalahan:
sudo mv -i /etc/nginx/conf.d/default.conf{,.off}
Atau sebaliknya untuk mengaktifkan situs:
sudo mv -i /etc/nginx/conf.d/example.com.conf{.disabled,}
Hindari sites-available
& Apa sites-enabled
Pun Biaya.
Saya sama sekali tidak melihat alasan untuk menggunakan sites-available
/ sites-enabled
:
Beberapa orang telah menyebutkan nginx_ensite
dan nginx_dissite
skrip - nama skrip ini bahkan lebih buruk daripada sisa bencana ini - tetapi skrip ini juga tidak ditemukan - mereka tidak ada dalam nginx
paket bahkan di Debian (dan mungkin di Ubuntu juga) , dan tidak hadir dalam paket mereka sendiri, juga, plus, apakah Anda benar-benar membutuhkan skrip pihak ketiga yang tidak standar untuk hanya memindahkan dan / atau menautkan file di antara dua direktori ?!
Dan jika Anda tidak menggunakan skrip (yang sebenarnya merupakan pilihan cerdas seperti di atas), maka muncul masalah bagaimana Anda mengelola situs:
- Apakah Anda membuat tautan simbolis dari
sites-available
ke sites-enabled
?
- Salin file?
- Pindahkan file?
- Edit file pada tempatnya
sites-enabled
?
Di atas mungkin tampak seperti beberapa masalah kecil untuk diatasi, sampai beberapa orang mulai mengelola sistem, atau sampai Anda membuat keputusan cepat, hanya untuk melupakannya berbulan-bulan atau bertahun-tahun ...
Yang membawa kita ke:
Apakah aman menghapus file sites-enabled
? Apakah itu tautan lunak? Tautan yang sulit? Atau satu-satunya salinan konfigurasi? Contoh utama dari konfigurasi neraka.
Situs mana yang telah dinonaktifkan? (Dengan conf.d
, lakukan pencarian inversi untuk file yang tidak diakhiri dengan .conf
- find /etc/nginx/conf.d -not -name "*.conf"
, atau gunakan grep -v
.)
Tidak hanya semua hal di atas, tetapi juga perhatikan include
arahan khusus yang digunakan oleh Debian / Ubuntu - /etc/nginx/sites-enabled/*
- tidak ada akhiran nama file yang ditentukan untuk sites-enabled
, tidak seperti untuk conf.d
.
- Apa artinya ini adalah bahwa jika suatu hari Anda memutuskan untuk mengedit satu atau dua file dengan cepat
/etc/nginx/sites-enabled
, dan Anda emacs
membuat file cadangan seperti default~
, maka, tiba-tiba, Anda memiliki keduanya default
dan default~
dimasukkan sebagai konfigurasi aktif, yang, tergantung pada arahan yang digunakan, bahkan mungkin tidak memberikan Anda mendapat peringatan, dan menyebabkan sesi debug yang berkepanjangan terjadi. (Ya, itu memang terjadi pada saya; itu selama hackathon, dan saya benar-benar bingung mengapa conf saya tidak berfungsi.)
Jadi, saya yakin itu sites-enabled
adalah kejahatan murni!
www-data
adalah topik yang terpisah. Sebagian besar sistem operasi mendefinisikan pengguna terpisah dengan izin yang lebih rendah yang dapat dijalankan oleh proses setelah mengikat ke port 80 sebagai root. Itu didefinisikan dalam file konfigurasi. Terapkan praktik keamanan dasar dari sana; jangan biarkan pengguna menulis apa pun yang tidak perlu ditulis server web, jangan biarkan pengguna lain menulis ke file kecuali itu disengaja.