Nginx gagal memuat ulang - bagaimana melacak mengapa?

96

Hai Saya sudah menjalankan server Nginx saya hebat di server Ubuntu 12,04 untuk sementara waktu.

Saya telah secara bertahap mengikat berbagai bit, dan mendapatkan sejauh mengoptimalkan waktu muat di halaman wordpress saya.

Setelah membuat beberapa perubahan pada file host saya, saya memutuskan untuk:

sudo /etc/init.d/nginx reload

Yang saya dapatkan:

  • Memuat ulang konfigurasi nginx nginx [gagal]

Tidak ada info atau alasan tambahan yang diberikan. Bagaimana saya bisa me-restart server saya sehingga ia mencetak pernyataan kesalahan saat memuat ulang sehingga saya bisa mulai melacak kesalahan.

Untuk pertanyaan bonus:

Untuk sysadmin Nginx itu, ketika Anda telah membuat banyak perubahan pada host dan melesat pada beberapa bit lainnya dan tiba-tiba server nginx Anda tidak mau memuat ulang (kebetulan semuanya tampaknya masih berjalan!) Bagaimana Anda memulai pendekatan Anda untuk mengisolasi mengapa atau mulai memecah hal-hal untuk debug!

Huw
sumber
4
Periksa sintaks Anda dengan sudo nginx -t(atau di sudo nginx -p /etc/nginx -c nginx.confmana /etc/nginxawalan konfigurasi Anda dan nginx.conffile konfigurasi utama).
Lekensteyn
sudo nginx -s reload juga sepertinya memberi saya pembacaan!
Huw

Jawaban:

145

Periksa syslog (/ var / log / syslog) untuk pesan tentang masalah file konfigurasi.

Dari commandline Anda dapat menjalankan:

nginx -c /etc/nginx/nginx.conf -t

untuk memiliki nginx periksa konfigurasi Anda untuk kesalahan.

Dlloyd
sumber
ah ha! sangat berguna, saya sepertinya mendapatkan: lokasi "/ blog / wp-admin" di luar lokasi "/blog/.*\.php$" di /etc/nginx/site-configs/wordpress.conf:1 ... menarik , beri aku sesuatu untuk dilanjut!
Huw
2
ARGH! Tiga jam mencari dan ternyata saya melewatkan satu; Terima kasih atas semua bantuannya, terbukti sangat penting dalam melacaknya. Kebetulan jika ada yang pernah berakhir pada pertanyaan ini setelah mengikuti posting yang dilayani Ars Technica Web. Saya pikir saya sudah melalui mereka dengan sisir gigi yang bagus sekarang!
Huw
4
menjalankan perintah ini memberi saya nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successfuldan saya masih belum bisa memulai nginx
Bill Garrison
1
@BillGarrison periksa syslog dan nginx error log untuk info lebih lanjut
Dlloyd
44

Jalankan perintah ini Anda dapat menemukan masalah.

sudo nginx -t
Nanhe Kumar
sumber
7

Anda mungkin harus memeriksa kesalahan dalam /var/log/nginx/error.log.

Dalam kasus saya, saya tidak menambahkan port untuk ipv6. Anda juga harus melakukan ini (jika Anda menjalankan nginx di port selain 80): listen [::]:8000 default_server ipv6only=on;

Arvind07
sumber
1
Catatan: jika izin Anda salah /var/log/nginx/error.log, nginx tidak akan bisa menulis kesalahan padanya dan akan gagal diam-diam. Memeriksa konfigurasi Anda seperti pada jawaban yang diterima ( nginx -c /etc/nginx/nginx.conf -t) akan membantu.
user898763452
5

Saya menjalankan perintah ini untuk mendapatkan nginx kembali dan bekerja:

# remove nginx conf files
apt-get purge nginx

# reinstall
apt-get install nginx

# make sure the default site is enabled
ln -s /etc/nginx/sites-available/default /etc/nginx/sites-enabled/default

# start nginx
sudo /etc/init.d/nginx start 

nginx sekarang berfungsi !!

Aaron Lelevier
sumber
2
Anda tidak harus menghapus dan membersihkan, cukup bersihkan. Dan sulit untuk mengetahui apakah ini akan menjawab pertanyaan karena purge akan menghapus semua file konfigurasi.
Panther
1
Idealnya - dan untuk pengguna lain saya lebih suka untuk mendapatkan jumlah maksimum pembacaan tentang di mana kegagalan itu terjadi dan memperbaiki instalasi saya saat ini alih-alih membersihkan dan mulai dari awal
Huw
1
@ bodhi.zazen saya mengoreksi jawaban saya. Dan untuk apa "Huw" katakan, aku setuju. Hanya saja saya pada awal menginstal dan mengatur nginxsehingga bukan masalah besar untuk hanya menghapusnya dan memulai kembali alih-alih melacak kesalahan. Terima kasih atas insite Anda.
Aaron Lelevier
dalam kasus saya, saya hanya saya harus mulai menggunakan perintah ini sudo /etc/init.d/nginx start
Sizzling Code
3

Periksa /etc/nginx/sites-available/defaultsalinan Anda atau apa pun yang Anda gunakan, dan pastikan Anda membatalkan komentar (menghapus #) apa pun }yang mungkin Anda perlukan sehubungan dengan {yang mungkin tidak diomortasikan. Itu masalah saya.

kenisfi
sumber
2

Perlu untuk membersihkan nginx kemudian ketik di command line:

ln -s /etc/nginx/sites-availbale/default .etc/nginx/sites-enabled/default
pengguna445400
sumber
Apakah yang Anda maksud apt-get purge?
RolandiXor
2

buka kembali semua file, gunakan

nginx -s reopen

lalu gunakan

nginx -s reload

Ketika nginx help menunjukkan bahwa itu akan, reload nginx dengan mengirimkan sinyal ke proses master.

Permintaan: tolong jangan memberikan purgeperintah tanpa hati-hati, karena dapat menyebabkan masalah bagi pemula (semua konfigurasi akan hilang) .... Masalah besar.

Anto
sumber
1

Jika itu memberi Anda kesalahan seperti itu, Anda dapat memeriksa journalctl -xe.
Ini memiliki banyak informasi tentang apa yang terjadi dalam masalah sistem operasi.
Anda dapat menemukan garis atau hanya journalctl -xe | grep nginxuntuk menemukan apa yang terjadi pada nginx ketika mencoba menjalankannya sendiri.

AmirHossein
sumber