Apabila laman tiba-tiba memulangkan 502 atau 504, pelawat hanya melihat satu baris ralat. Kedua-duanya hampir selalu berpunca "antara proksi songsang (seperti Nginx) dan aplikasi bahagian belakang". Panduan ini membantu anda mengesannya dengan cepat.
1. 502 berbanding 504
- 502 Bad Gateway: apabila Nginx memajukan permintaan ke bahagian belakang, bahagian belakang tidak menjawab, telah terhenti, atau tidak boleh dicapai.
- 504 Gateway Timeout: bahagian belakang menjawab tetapi terlalu perlahan, melebihi had menunggu.
2. Punca paling biasa
- Bahagian belakang (Node, PHP-FPM, Python dan sebagainya) terhenti atau tidak pernah dimulakan.
- Port atau alamat proxy_pass Nginx salah, atau bahagian belakang menukar port.
- Bahagian belakang perlahan (pertanyaan lambat, gelung tak terhingga, API luar tamat masa) → 504.
- Memori kehabisan dan proses dimatikan oleh OOM killer sistem.
3. Langkah menyelesaikan masalah
- Adakah bahagian belakang berjalan? Gunakan pm2 list atau systemctl status PERKHIDMATAN untuk mengesahkannya.
- Semak port: ss -lntp untuk melihat sama ada bahagian belakang mendengar pada port yang dipajukan Nginx.
- Baca log ralat Nginx: tail -f /var/log/nginx/error.log — ia menyatakan sama ada sambungan ditolak atau tamat masa.
- Hubungi bahagian belakang secara tempatan: curl http://127.0.0.1:PORT — jika berjaya, masalahnya pada konfigurasi Nginx; jika tidak, bahagian belakang itu sendiri yang rosak.
4. Pembetulan yang sepadan
- Bahagian belakang terhenti → mulakan semula proses dan periksa lognya untuk punca kegagalan.
- Port salah → betulkan proxy_pass Nginx, kemudian nginx -t dan reload.
- Perlahan 504 → optimumkan pertanyaan atau API yang lambat, atau naikkan proxy_read_timeout (penyelesaian sementara).
- OOM → tambah swap atau naik taraf RAM (lihat artikel "Kehabisan Memori (OOM)" dalam Pusat Bantuan).