502 Bad Gateway Hatası Nedir?
Öncelikle, 502 Bad Gateway hatasının ne olduğunu anlamamız gerekiyor. Bu hata, genellikle bir sunucu, başka bir sunucudan gelen geçerli bir yanıt alamadığında ortaya çıkar. Yani, Nginx, istemci (tarayıcı) ile bağlantı kurarken arka planda başka bir sunucudan düzgün bir yanıt alamadığında bu hatayı verir. Genellikle, bu hata PHP-FPM, backend sunucusu veya ağ yapılandırma sorunlarından kaynaklanabilir.
1. Adım: Nginx ve PHP-FPM Durumunu Kontrol Et
İlk yapmamız gereken şey, Nginx ve PHP-FPM servislerinin çalışıp çalışmadığını kontrol etmek. Bu işlem oldukça basit ve birkaç komutla halledilebilir.
Aşağıdaki komut ile PHP-FPM servisinin çalışıp çalışmadığını kontrol edebilirsiniz:
sudo systemctl status php-fpm
Eğer servis durmuşsa, hemen başlatabilirsiniz:
sudo systemctl start php-fpm
Benzer şekilde, Nginx servisini de kontrol edelim:
sudo systemctl status nginx
Eğer Nginx durmuşsa, şu komutla başlatabilirsiniz:
sudo systemctl start nginx
2. Adım: Logları İnceleyin
Eğer servisler çalışıyorsa ancak hala 502 hatası alıyorsanız, bir sonraki adım log dosyalarını incelemek olmalı. Nginx ve PHP-FPM logları, hataların ne olduğunu anlamanıza yardımcı olabilir.
Nginx’in log dosyasına şu komutla ulaşabilirsiniz:
sudo tail -f /var/log/nginx/error.log
PHP-FPM loglarını kontrol etmek içinse şu komutu kullanabilirsiniz:
sudo tail -f /var/log/php-fpm.log
Log dosyalarını inceledikten sonra, hataya neden olan kısmı tespit edebilir ve gerekli düzeltmeleri yapabilirsiniz. Örneğin, PHP-FPM’nin zaman aşımı nedeniyle hata alıyor olabilirsiniz.
3. Adım: PHP-FPM Konfigürasyonunu Kontrol Et
PHP-FPM, özellikle "pm.max_children" parametresi gibi ayarlarla çok hassas olabilir. Eğer bu değer çok düşükse, çok sayıda istek geldiğinde PHP-FPM servisinizin tıkanmasına ve 502 hatası almanıza neden olabilir. Bu ayarları kontrol etmek için PHP-FPM konfigürasyon dosyasını açmalısınız:
sudo nano /etc/php/7.4/fpm/pool.d/www.conf
Burada, "pm.max_children" değerini artırarak daha fazla istek işleyebilmesini sağlayabilirsiniz:
pm.max_children = 50
Bu ayarları değiştirdikten sonra PHP-FPM servisini yeniden başlatmayı unutmayın:
sudo systemctl restart php-fpm
4. Adım: Proxy Ayarlarını Gözden Geçirin
Bir başka yaygın sorun, Nginx'in arka uç sunucuya yönlendirme yaparken doğru proxy ayarlarını kullanmaması olabilir. Eğer Nginx'in doğru bir şekilde backend sunucusuna yönlendirme yapmadığını düşünüyorsanız, proxy ayarlarını gözden geçirin. Aşağıdaki gibi bir konfigürasyonun doğru olduğundan emin olun:
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
Yukarıdaki örnek, Nginx'in PHP dosyalarını doğru şekilde PHP-FPM servisine yönlendirmesini sağlar. Eğer IP adresi veya port numarasını değiştirdiyseniz, bunu güncellemeniz gerekebilir.
5. Adım: Sunucu Kaynaklarını Kontrol Et
Son olarak, 502 hatasının nedeni sunucunuzun aşırı yüklenmesi olabilir. Eğer sunucunuzda yeterli bellek veya işlemci gücü yoksa, PHP-FPM veya Nginx düzgün çalışamayabilir. Sunucu kaynaklarınızı kontrol etmek için şu komutları kullanabilirsiniz:
top
Bu komut, sistem kaynaklarınızın ne durumda olduğunu gösterir. Eğer sunucunuz aşırı yüklenmişse, bazı hizmetleri geçici olarak durdurup tekrar deneyebilirsiniz.
Sonuç
Nginx 502 Bad Gateway hatası, birçok farklı sebepten kaynaklanabilir, ancak yukarıdaki adımları takip ederek hatayı çözmek mümkündür. Öncelikle sunucuların çalışıp çalışmadığını kontrol edin, logları inceleyin, PHP-FPM konfigürasyonlarını gözden geçirin ve proxy ayarlarınızı doğru yapılandırın. Son olarak, sunucu kaynaklarını kontrol ederek, her şeyin sorunsuz çalıştığından emin olun.
Unutmayın, bu hatayı aldığınızda sakin kalın ve doğru adımları takip ederek çözüm üretin. Web siteniz bir şekilde tekrar eski haline dönecek ve ziyaretçilerinizi ağırlamaya devam edeceksiniz!