Pemecahan masalah Nginx dasar
Artikel ini menunjukkan beberapa pemecahan masalah dasar untuk Nginx, salah satu server HTTP paling populer. Tujuannya adalah untuk memperbaiki beberapa kesalahan paling umum yang mungkin ada dalam konfigurasi Nginx Anda.
Mencari kesalahan sintaks atau peringatan dalam konfigurasi
Melalui perintah sederhana, Anda dapat memverifikasi status file konfigurasi Nginx:$ sudo systemctl config nginx
Output akan menunjukkan apakah file konfigurasi benar atau, jika tidak, itu akan menunjukkan file dan baris di mana masalahnya.
$ sudo systemctl config nginx
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
$ sudo systemctl config nginx
"worker_connections" directive is not allowed here in /etc/nginx/nginx.conf:12
nginx: configuration file /etc/nginx/nginx.conf test failed
Jika Anda tidak memiliki perintah layanan yang tersedia di sistem Anda, Anda dapat memilih untuk menggunakan -t
Parameter Nginx, yang juga menguji file konfigurasi untuk sintaks yang benar dan kemudian mencoba membuka file yang dirujuk dalam konfigurasi.$ sudo nginx -t
Periksa apakah Nginx berjalan
Untuk memeriksa status layanan Nginx Anda dapat menggunakan perintah berikut:$ sudo systemctl status nginx
Anda juga dapat menggunakan perintah umum untuk memvalidasi status layanan:$ sudo /etc/init.d/nginx status
Verifikasi bahwa port terbuka dan layanan mendengarkan
Verifikasi bahwa Anda memiliki port yang diperlukan terbuka dan untuk memverifikasi bahwa layanan Nginx mendengarkan melalui port tersebut, Anda dapat menggunakan lsof
perintah, idealnya di port default 80 dan 443.
$ sudo lsof -i :80 -s TCP:LISTEN
nginx 1305 nginx 6u IPv4 1613873 0t0 TCP *:http (LISTEN)
nginx 1305 nginx 7u IPv6 1613874 0t0 TCP *:http (LISTEN)
nginx 1306 nginx 6u IPv4 1613873 0t0 TCP *:http (LISTEN)
nginx 1306 nginx 7u IPv6 1613874 0t0 TCP *:http (LISTEN)
Periksa apakah Nginx memproses permintaan
Jika Nginx benar-benar mendengarkan port yang sesuai, langkah selanjutnya adalah memeriksa apakah itu memproses permintaan, yang dapat dibuat dengan menggunakan curl
alat dengan menggunakan IP, URL, atau localhost jika pengaturan Anda mendengarkan di localhost:
$ curl -i http://127.0.0.1/nginx_status
HTTP/1.1 200 OK
Server: nginx/1.11.1
Date: Wed, 08 Aug 2021 11:36:43 GMT
Content-Type: text/plain
Content-Length: 97
Connection: keep-alive
Active connections: 1
server accepts handled requests
3 3 3
Reading: 0 Writing: 1 Waiting: 0
Periksa log
Periksa log terakhir dari layanan Nginx.$ sudo tail -f /var/log/nginx/access.log /var/log/nginx/error.log
Periksa izin
Pastikan Nginx memiliki izin yang sesuai untuk mengakses file yang dibutuhkan.
$ namei -om /usr/share/nginx/html/index.html
f: /usr/share/nginx/html/index.html
drwxr-xr-x root root /
drwxr-xr-x root root usr
drwxr-xr-x root root share
drwxr-xr-x root root nginx
drwxr-xr-x root root html
-rw-r--r-- root root index.html
Muat ulang layanan
Jika Anda membuat perubahan pada file konfigurasi yang belum diterapkan, Anda dapat memuat ulang layanan, memulai proses Nginx baru, dan mematikan pekerja lama secara perlahan untuk menghindari shutdown yang cepat dan agresif.$ sudo service nginx reload
Untuk shutdown cepat yang tidak menunggu proses berakhir, Anda dapat memulai ulang Nginx.$ sudo service nginx restart
Aktifkan mode de debug
Dalam file konfigurasi (biasanya /etc/nginx/nginx.conf
) ubah level log untuk error_log
arahan:
server {
# stuff
error_log /var/logs/nginx/error.log debug;
# stuff
}
Anda dapat men-debug aturan penulisan ulang untuk melihat hasil pemrosesan di log kesalahan:
server {
# stuff
error_log /var/logs/nginx/error.log notice;
rewrite_log on;
# stuff
}
Verifikasi resolusi DNS
Aturan di /etc/hosts
memiliki prioritas di atas resolusi DNS. Anda dapat memverifikasi catatan DNS dengan:$ host -t A website.com
Anda juga dapat memeriksa resolusi DNS lengkap:$ dig +trace website.com
Kesimpulan
Ini adalah beberapa langkah pemecahan masalah dasar untuk beberapa kesalahan paling umum dengan Nginx. Anda juga dapat mengandalkan dokumentasi jika langkah-langkah ini tidak memperbaiki masalah Anda, memanfaatkan popularitas besar Nginx.