Nginx 502 Bad Gateway Hatası Nasıl Düzeltilir? – Adım Adım Çözüm Rehberi

Nginx 502 Bad Gateway hatası genellikle bir sunucu yapılandırma hatası veya yüksek trafik nedeniyle ortaya çıkar. Bu yazıda, hatanın nedenlerini ve nasıl çözüleceğini detaylı bir şekilde ele aldım. Adım adım çözüm yollarını takip ederek, sorununuzu kolayc

BFS

Web sitenizi açtınız ve ne yazık ki, birdenbire “502 Bad Gateway” hatasıyla karşılaştınız. Bir şeylerin ters gittiğini hemen fark ettiniz ama ne olduğunu bilmiyorsunuz. Panik yapmayın! Bu yazımızda, Nginx ile karşılaştığınız 502 Bad Gateway hatasının nedenlerini ve nasıl çözülebileceğini adım adım anlatacağım. Gelin, bu sorunu çözmenin yollarına birlikte göz atalım.

1. Nginx 502 Bad Gateway Hatasının Nedenleri
Öncelikle, 502 Bad Gateway hatasının ne olduğuna bir göz atalım. Bu hata, web sunucunuzun (bu durumda Nginx) bir istek aldığında, hedef sunucudan geçerli bir yanıt alamadığında ortaya çıkar. Yani, Nginx web sunucusu, istenen kaynağa erişmeye çalışırken başka bir sunucudan yanıt alamaz ve bu hata mesajını gösterir.

Peki, neden böyle bir şey olabilir? İşte başlıca nedenler:

- PHP-FPM Çökmesi: Eğer siteniz PHP tabanlıysa ve PHP-FPM çalışmıyorsa, Nginx bu hatayı verebilir.
- Sunucu Zorlanması: Eğer sunucunuz çok fazla trafik alıyorsa veya sistem kaynakları (RAM, CPU) tükenmişse, Nginx istekleri işleyemeyebilir.
- Yanıt Zamanı Aşımı: Backend sunucusu çok yavaşsa, Nginx yanıt almak için belirli bir süre bekler ve zaman aşımına uğrayarak 502 hatası verir.
- Yanlış Yapılandırma: Nginx konfigürasyon dosyasındaki hatalar, isteklerin doğru şekilde yönlendirilmemesine yol açabilir.

Şimdi, bu hatayı nasıl düzelteceğimize geçelim.

2. Adım Adım 502 Bad Gateway Hatası Nasıl Düzeltilir?

#### Adım 1: Sunucu Durumunu Kontrol Et
İlk olarak, sunucunuzun sağlığını kontrol etmelisiniz. Eğer PHP-FPM veya web sunucusu çökmüşse, servisleri yeniden başlatmak gerekebilir. Aşağıdaki komutları kullanarak Nginx ve PHP-FPM servislerinin durumunu kontrol edebilirsiniz.


# Nginx durumunu kontrol et
systemctl status nginx

# PHP-FPM durumunu kontrol et
systemctl status php7.4-fpm


Eğer bir problem varsa, aşağıdaki komutlarla servisleri yeniden başlatabilirsiniz:


# Nginx servisini yeniden başlat
systemctl restart nginx

# PHP-FPM servisini yeniden başlat
systemctl restart php7.4-fpm


# Adım 2: Nginx ve PHP-FPM Konfigürasyonlarını Kontrol Et
Yanıt zaman aşımı veya yapılandırma hatalarından dolayı bu hatayı alabilirsiniz. Nginx ve PHP-FPM’in konfigürasyon dosyalarını gözden geçirmek önemlidir. Nginx’in konfigürasyon dosyası genellikle `/etc/nginx/nginx.conf` veya `/etc/nginx/sites-available/default` dosyasındadır. Dosyada, doğru `proxy_pass` ve `fastcgi_pass` değerlerinin kullanıldığından emin olun.

PHP-FPM ayarlarını da kontrol etmelisiniz. Genellikle `/etc/php/7.4/fpm/pool.d/www.conf` dosyasına bakarak, `listen` direktifinin doğru sunucuya işaret ettiğinden emin olabilirsiniz.

# Adım 3: Sunucu Kaynaklarını Kontrol Et
Sunucunuzun RAM ve CPU kullanımını kontrol etmek, yüksek yük nedeniyle Nginx’in yanıt alamadığı durumları önleyebilir. `htop` veya `top` komutları ile sunucunuzun kaynak kullanımını izleyebilirsiniz:


# Sunucu kaynaklarını kontrol et
htop


Eğer kaynaklarınız tükenmişse, sunucuya ek kaynak eklemeyi düşünebilirsiniz. Ayrıca, gereksiz servisleri kapatarak, kaynak kullanımını azaltabilirsiniz.

# Adım 4: Log Dosyalarını İnceleyin
Nginx ve PHP-FPM log dosyaları, hatanın ne olduğunu anlamada size çok yardımcı olabilir. Nginx log dosyaları genellikle `/var/log/nginx/error.log` yolunda bulunur. PHP-FPM log dosyalarını ise `/var/log/php7.4-fpm.log` dosyasından kontrol edebilirsiniz.


# Nginx error log dosyasını kontrol et
cat /var/log/nginx/error.log

# PHP-FPM error log dosyasını kontrol et
cat /var/log/php7.4-fpm.log


Bu log dosyalarındaki hatalar, sorunun ne olduğunu anlamanızı sağlayacaktır.

# Adım 5: Proxy ve Timeout Ayarlarını Düzenleyin
Eğer zaman aşımı hataları alıyorsanız, Nginx yapılandırmanızda bazı ayarları yapmanız gerekebilir. `proxy_read_timeout` ve `proxy_connect_timeout` gibi ayarları arttırarak bu sorunu çözebilirsiniz. Nginx konfigürasyon dosyasına şu satırları ekleyebilirsiniz:


server {
    ...
    location / {
        proxy_pass http://127.0.0.1:9000;
        proxy_connect_timeout 300;
        proxy_read_timeout 300;
    }
}


Bu ayarlar, Nginx’in backend sunucuya daha uzun süre bağlantı kurmasını sağlar.

# Adım 6: Sunucu Yeniden Başlatma
Tüm bu işlemlerden sonra, sunucuyu yeniden başlatmanız gerekebilir. Yeniden başlatmak, yapılan tüm değişikliklerin aktif hale gelmesini sağlar:


# Sunucuyu yeniden başlat
reboot


3. Nginx 502 Bad Gateway Hatasını Önlemek İçin Alınabilecek Önlemler
Bundan sonra, aynı hatayı tekrar almamak için bazı önlemler alabilirsiniz. İşte bazı öneriler:

- Sunucu Kaynaklarını İzleyin: Sunucu yükü arttığında, kaynaklar tükenebilir. Sunucunuzun RAM ve CPU kullanımını düzenli olarak izlemek, erken uyarı almanızı sağlar.
- Load Balancer Kullanımı: Eğer yüksek trafikli bir siteniz varsa, yük dengelemesi yaparak, trafiği birden fazla sunucuya dağıtabilirsiniz.
- Otomatik Yeniden Başlatma: Eğer PHP-FPM veya Nginx çökerse, bu servislerin otomatik olarak yeniden başlatılmasını sağlayabilirsiniz. Bunun için `systemd` kullanabilirsiniz.

###

İlgili Yazılar

Benzer konularda diğer yazılarımız

ASP.NET Core 500 Internal Server Error: Sebepleri ve Çözümleri

Bir web geliştiricisi olarak, karşılaştığınız en zorlayıcı hatalardan biri şüphesiz "500 Internal Server Error"dır. Bu hata, web uygulamanızda her şeyin yolunda gittiğini düşündüğünüz bir anda karşınıza çıkabilir ve tüm projeyi durdurabilir. Ancak merak...

Steam İstemcisinin Çökmesi: Sorunları Çözmek İçin Pratik Adımlar

Steam İstemcisinin Çökme Sorunu Neden Olur?Merhaba! Eğer sen de Steam istemcisinin birden bire çökmesiyle karşılaştıysan, yalnız değilsin. Bu, aslında pek çok Steam kullanıcısının karşılaştığı yaygın bir sorun. Steam, oyun dünyasının en popüler platformlarından...

PHP "Warning: Division by zero" Hatası: Sorun, Çözüm ve Dikkat Edilmesi Gerekenler

PHP dünyasında, programcıların karşılaştığı en yaygın hatalardan biri olan "Warning: Division by zero" hatasını ele alıyoruz. Bu hata, küçük bir bölücü hatasından dolayı uygulamanızın çalışmasını engelleyebilir. Hadi, bu hatayı daha yakından inceleyelim...