Mengatasi 502 Bad Gateway pada Nginx

Akhir minggu bukannya bersantai malah sibuk ngurusin server. Haha. 😀 Kali ini masalah yang saya alami adalah pada website WordPress yang menggunakan Nginx dan didepannya ada CloudFlare kok malah muncul error HTTP 502 Bad Gateway. Padahal saya masih bisa mengakses situsnya kalau lewat alamat IP atau localhost dengan lynx lewat SSH. Ada yang salah ini. 🙁

Yang pasti kalau anda melihat halaman putih Nginx disertai pesan error berikut berarti kasusnya sama:

  • 502 Bad Gateway
  • 502 Proxy Error
  • 502 Bad Gateway NGINX
  • 502 Service Temporarily Overloaded
  • Error 502
  • HTTP 502
  • HTTP Error 502 – Bad Gateway

Sebelum kita membahas solusinya maka wajib kita memahami apa maksud dari pesan kesalahan ini. Jadi Bad Gateway kalau diartikan adalah gerbang/jalan masuk yang bermasalah. Maksudnya adalah layanan atau aplikasi yang menerima dan mengolah permintaan dari Nginx tidak bisa menanganinya. Ini biasanya terjadi pada PHP-FPM dan menjadi dasar saya dalam pembahasan kasus ini.

Restart PHP-FPM
Merupakan solusi paling mudah dan cepat, anda tinggal ketikkan:

service php5-fpm restart

Ini bisa dikatakan sifatnya sementara karena kita tidak berusaha mencari tahu dan memperbaiki masalahnya. Setelah servicenya aktif lagi wajib anda mengecek isi log error PHP-FPM agar bisa didiagnosa masalahnya apa.

Pastikan layanan PHP-FPM mendengarkan dengan tepat
Ada 2 jenis cara layanan PHP-FPM mendengarkan dan melayani request, lewat socket atau alamat IP. Silahkan cek konfigurasinya (bernama www.conf) dan pastikan isinya salah satu dari berikut ini, atau anda tukar:

listen = /var/run/php5-fpm.sock

atau

listen = 127.0.0.1:9000

Setelah itu restart PHP-FPM.

Cek hak akses PHP-FPM
Ada kalanya kita lupa mengatur bagaimana file – file service PHP-FPM akan digunakan oleh Nginx. Pastikan saja memang bisa saling berkomunikasi:

  • Lihat isi php.ini dan www.conf dalam bagian user dan group apakah sesuai dengan konfigurasi Nginx ada.
  • Apakah file /var/run/php5–fpm.sock bisa dipakai Nginx?
  • Termasuk juga /var/lib/php harap diperiksa.

Matikan APC atau coba sistem cache lain dalam PHP
APC (Alternative PHP Cache) fungsinya adalah membuat cache dari kode – kode PHP yang dieksekusi agar pada proses berikutnya yang membutuhkan fungsi yang sama akan lebih cepat diolah. Tapi kadang fitur ini berakibat error 502, saya sarankan agar dicoba dulu nonaktifkan.

Saya sarankan diganti ke alternatifnya saja. Pertimbangannya ini adalah sistem lama dan sudah digantikan oleh PHP OPcache, coba gunakan yang baru dan resmi diikutkan dalam PHP versi 5.5 keatas.

Tingkatkan ukuran buffer dan timeout pada konfigurasi Nginx
Jadi silahkan edit nginx.conf dan letakkan kode berikut dalam blok http{}:

http {

    fastcgi_buffers 8 16k;
    fastcgi_buffer_size 32k;
    fastcgi_connect_timeout 300;
    fastcgi_send_timeout 300;
    fastcgi_read_timeout 300;

}

Fungsinya agar Nginx mengolah data dengan wadah yang lebih besar dalam memori sehingga tidak perlu disimpan dalam harddisk sementara waktu. Juga waktu prosesnya diberi batas waktu lebih lama agar tidak langsung dianggap gagal.

Sekian dulu sampai disini pembahasannya, saya baru tahu beberapa solusi diatas. Hehe. 😀 Dan saya baru sadar walaupun judulnya Nginx tapi solusinya ada 4 yang utak – atik PHP-FPM dan cuma 1 yang urusannya dengan Nginx. Haha. 😀

Tinggalkan komentar