1. Nginx ve 502 Bad Gateway Hatası Nedir?
Peki, bu hatayı almamıza neden olan şey nedir? Aslında "Bad Gateway", bir sunucunun başka bir sunucudan beklediği cevabı alamadığı bir durumu ifade eder. Bu genellikle, Nginx'in, yönlendirmeye çalıştığı backend sunucusundan geçerli bir yanıt alamadığında meydana gelir. Backend sunucusu bir veritabanı olabilir, bir PHP uygulaması veya başka bir hizmet olabilir.
2. 502 Bad Gateway Hatasının Nedenleri
En yaygın nedenlerden biri, Nginx'in arka uç sunucusundan geçerli bir yanıt alamamasıdır. Bu durumda, PHP-FPM (FastCGI Process Manager) gibi servisler çalışmıyor olabilir. Eğer web sunucunuz bu servislere erişemiyorsa, “502 Bad Gateway” hatasıyla karşılaşırsınız.
# 2.2. Yanıt Zaman Aşımı
Bazen Nginx, backend sunucusunun çok uzun sürede yanıt vermesini bekleyemez ve bu da hata ile sonuçlanır. Eğer veritabanı sorguları çok uzun sürüyorsa veya uygulama çok fazla kaynak kullanıyorsa, zaman aşımına uğrayabilirsiniz.
Nginx konfigürasyon dosyanızda yapılan küçük bir hata da bu soruna yol açabilir. Örneğin, PHP-FPM için yanlış bir socket yolu veya port numarası girmiş olabilirsiniz.
# 2.4. Sunucu Yetersizlikleri
Donanım sorunları veya aşırı trafik nedeniyle sunucunuzun kaynakları tükenmiş olabilir. Bu durumda, Nginx sunucusunun backend sunucusuna ulaşamaması ve "502 Bad Gateway" hatası göstermesi çok olasıdır.
# 3.1. PHP-FPM Durumunu Kontrol Etme
Eğer PHP kullanıyorsanız, PHP-FPM'in çalışıp çalışmadığını kontrol etmek ilk adım olmalıdır. PHP-FPM çalışmıyorsa, bu durumda Nginx, backend sunucusundan geçerli bir yanıt alamayacaktır. PHP-FPM'i yeniden başlatmayı deneyin.
sudo systemctl restart php7.4-fpm
Bu komut, PHP-FPM servisini yeniden başlatır ve hatayı çözebilir.
# 3.2. Nginx ve PHP-FPM Yapılandırmalarını Gözden Geçirme
Yanlış yapılandırmalar da bu hataya yol açabilir. Nginx yapılandırma dosyasını (genellikle `/etc/nginx/nginx.conf`) ve PHP-FPM yapılandırma dosyasını (örneğin `/etc/php/7.4/fpm/pool.d/www.conf`) kontrol edin. Özellikle PHP-FPM için kullanılan socket yolunu doğru girdiğinizden emin olun.
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
# 3.3. Sunucu Kaynaklarını Kontrol Etme
Sunucunuzun kaynaklarının tükenip tükenmediğini kontrol etmek için `top` veya `htop` gibi araçları kullanabilirsiniz. Eğer sunucu kaynakları bitiyorsa, daha fazla bellek veya CPU gücü sağlamayı düşünebilirsiniz.
top
Bu komut ile sistemdeki kaynak kullanımını görebilirsiniz. Eğer bir işlem fazla kaynak kullanıyorsa, bunu durdurmayı düşünebilirsiniz.
# 3.4. Hata Günlüklerini İnceleme
Her web yöneticisinin unutmaması gereken bir diğer önemli adım ise, sunucu hata günlüklerini incelemektir. Nginx hata logları genellikle `/var/log/nginx/error.log` dosyasındadır.
tail -f /var/log/nginx/error.log
Bu loglar, hatanın kaynağını anlamanızı kolaylaştıracaktır.
# 3.5. Sunucu Yeniden Başlatma
Bazen basit bir yeniden başlatma işlemi tüm sorunları çözebilir. Hem Nginx hem de PHP-FPM'i yeniden başlatmak, cache'leri temizleyebilir ve sorunu çözebilir.
sudo systemctl restart nginx
sudo systemctl restart php7.4-fpm
4. Sonuç: Hata Çözümüne Giden Yol
Unutmayın, her hata, size daha fazla şey öğrenme fırsatı sunar. Bu tür hatalarla karşılaştığınızda sakin olun, sorunun kaynağını belirleyin ve çözümü adım adım takip edin.