1. “502 Bad Gateway” Hatası Nedir?
Nginx "502 Bad Gateway" hatası, aslında basit bir şekilde, Nginx’in bir istemciden aldığı isteği arka planda başka bir sunucuya ilettiğinde, bu sunucudan beklediği geçerli yanıtı alamadığı anlamına gelir. Yani, istemci (tarayıcı) ile sunucu arasındaki iletişimde bir kopukluk olmuş ve Nginx, doğru bir yanıt alarak sayfanızı göstermeye çalışırken başarısız olmuş.
2. Nginx 502 Hatasının Başlıca Sebepleri
Şimdi gelelim, bu hatayı almanıza yol açan en yaygın sebeplere. Aşağıda, Nginx'in karşılaştığı bu hataların bazılarını bulabilirsiniz:
- Sunucu Aşırı Yüklenmiş: Eğer web sunucunuza çok fazla trafik geliyorsa, sunucunuz tıkanabilir. Bu durumda Nginx, backend sunucusuna istek göndermekte zorluk çeker ve "502 Bad Gateway" hatası alırsınız.
- Yetersiz Konfigürasyon Ayarları: Nginx’in backend sunucusuyla nasıl iletişim kuracağını belirleyen ayarlarda bir hata olabilir. Bu da veri iletiminde sorunlara yol açar.
- Firewall ve Güvenlik Duvarı Sorunları: Bazen, istemci ve sunucu arasındaki güvenlik duvarı veya firewall ayarları, Nginx’in backend sunucusuna ulaşmasını engelleyebilir.
- DNS Sorunları: Eğer Nginx, backend sunucusunun IP adresine ulaşamıyorsa, bu da 502 hatasına yol açabilir. DNS yapılandırmalarınızda bir sorun olabilir.
3. Nginx “502 Bad Gateway” Hatası Nasıl Çözülür?
Artık hata hakkında biraz bilgi sahibi oldunuz, peki nasıl çözülür? İşte Nginx 502 hatasıyla başa çıkmak için yapabileceğiniz bazı adımlar:
İlk olarak, backend sunucusunun aktif olup olmadığını kontrol etmelisiniz. Eğer PHP-FPM veya başka bir servis kullanıyorsanız, o servisin çalıştığından emin olun. Örneğin, PHP-FPM servisini yeniden başlatmak için şu komutu kullanabilirsiniz:
sudo systemctl restart php7.4-fpm
# 2. Sunucu Yükünü Kontrol Etme
Eğer sunucunuz aşırı yüklenmişse, yük dengelemesi yaparak veya daha fazla kaynak sağlayarak sorunu çözebilirsiniz. Sunucunuzun işlemci ve bellek kullanımını kontrol etmek için:
top
# 3. Nginx Konfigürasyonunu Gözden Geçirme
Nginx’in konfigürasyon ayarlarını kontrol etmek önemlidir. Yanlış yapılandırılmış proxy ayarları, backend sunucusuna doğru şekilde ulaşamamasına neden olabilir. Aşağıdaki gibi bir proxy ayarınız varsa, doğru şekilde yapılandırıldığından emin olun:
location / {
proxy_pass http://localhost:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
# 4. Log Dosyalarını Kontrol Etme
Nginx’in ve backend sunucusunun log dosyaları, hata hakkında daha fazla bilgi verebilir. Nginx log dosyalarını şu komutla kontrol edebilirsiniz:
tail -f /var/log/nginx/error.log
Backend sunucusunun loglarını da kontrol ederek, hatanın nereden kaynaklandığını bulabilirsiniz.
# 5. Firewall ve Güvenlik Duvarı Ayarlarını Kontrol Etme
Eğer firewall veya güvenlik duvarı ayarları yanlış yapılandırılmışsa, Nginx’in backend sunucusuna erişmesini engelliyor olabilir. Firewall ayarlarınızı kontrol etmek için:
sudo ufw status
Eğer gerekiyorsa, güvenlik duvarını doğru bir şekilde yapılandırabilirsiniz.
# 6. DNS Sorunlarını Kontrol Etme
DNS yapılandırmalarınızda sorun olup olmadığını kontrol etmek için şu komutu kullanabilirsiniz:
nslookup backend_server_ip
Eğer DNS yanlış yapılandırılmışsa, doğru IP adresini kullanarak bu sorunu çözebilirsiniz.