Sunucu Yönetimi & Linux

    502 Bad Gateway Hatası Nedir, Neden Olur ve Nasıl Çözülür?

    502 Bad Gateway'in gerçek kaynağı olan PHP-FPM, Nginx upstream ve kaynak sorunlarını sunucu tarafında teşhis etme rehberi.

    15 dk okuma Güncellendi: 11 Ağustos 2026

    502 Bad Gateway hatası, kendi sunucusunu yöneten herkesin er geç karşılaştığı ve genellikle en kötü zamanda çıkan bir hatadır: trafiğin zirve yaptığı saatte, bir güncellemenin hemen ardından ya da hiçbir sebep yokken gece yarısı. Ekranda gördüğünüz "502 Bad Gateway – nginx" satırı size neredeyse hiçbir şey söylemez, ama aslında çok net bir anlamı vardır. Nginx isteği aldı, arkasındaki uygulama sunucusuna iletmeye çalıştı ve oradan ya hiç yanıt alamadı ya da anlamlandıramadığı bir yanıt aldı. Yani hata Nginx'in kendisinde değil, Nginx'in konuştuğu bileşendedir — çoğu kurulumda bu bileşen PHP-FPM'dir.

    Bu konuyu Türkçe arattığınızda karşınıza çıkan yazıların büyük bölümü ziyaretçi için yazılmıştır: sekmeyi kapatıp açın, önbelleği temizleyin, farklı tarayıcı deneyin, modemi yeniden başlatın. Kendi sitesi 502 veren bir sistem yöneticisi için bunların hiçbir kıymeti yoktur. Bu rehberde Nginx error.log dosyasındaki connect() failed ve upstream satırlarını nasıl okuyacağınızı, PHP-FPM soket yolunun nasıl doğrulanacağını, pm.max_children limitinin tükendiğini nereden anlayacağınızı ve 502 ile 504 hatasını hangi tek satırla ayırt edeceğinizi göstereceğim. Sonunda sorunun tekrar etmemesi için kuracağınız izleme ve otomatik kurtarma yapılandırmasını da bulacaksınız.

    502 Bad Gateway Ne Anlama Gelir#

    502 Bad Gateway, bir ağ geçidi ya da ters vekil (reverse proxy) görevi gören sunucunun, isteği ilettiği arka uç sunucudan geçersiz bir yanıt aldığını bildiren HTTP durum kodudur. Kritik nokta şudur: hatayı üreten sunucu çalışıyordur. Nginx ayakta olmasa hiç yanıt gelmez, tarayıcı "bağlantı reddedildi" derdi. 502 alıyorsanız Nginx sağlıklıdır, sorun onun arkasındadır.

    Tipik bir Nginx + PHP-FPM kurulumunda istek zinciri şöyle işler:

    Tarayıcı  →  Nginx (80/443)  →  PHP-FPM (unix soket veya 127.0.0.1:9000)  →  PHP  →  MySQL
    

    502 hatası bu zincirin ikinci okundaki kopmadır. Nginx PHP-FPM'e ulaşamamış ya da PHP-FPM yarım/bozuk bir yanıt döndürmüştür. Zincirin ilerisindeki bir sorun (örneğin MySQL'in yavaşlaması) genellikle 502 değil 504 üretir; bu ayrımı birazdan netleştireceğiz.

    Aynı hata farklı mimarilerde de görülür. Bir Node.js uygulamasının önünde ters vekil olarak duran Nginx, uygulama süreci çöktüğünde 502 verir. Apache mod_proxy ile bir arka uca vekillik yapıyorsa aynı durumda "Proxy Error" ya da 502 döndürür. Mimariniz ne olursa olsun teşhis mantığı aynıdır: vekil kimle konuşuyor, o taraf ayakta mı?

    502'nin Kaynağı Tarayıcı Değildir#

    Bunu net söyleyelim: 502 hatasında tarayıcı önbelleğini temizlemek, farklı tarayıcı denemek veya modemi yeniden başlatmak sonucu değiştirmez. Hata sunucunuzun ürettiği bir yanıttır ve o yanıt her istekte yeniden üretilir.

    Hatanın gerçekten sunucudan geldiğini doğrulamak için tarayıcıyı devre dışı bırakıp doğrudan HTTP isteği yapın:

    curl -I https://ornek.com
    # HTTP/1.1 502 Bad Gateway
    # Server: nginx
    # Content-Type: text/html
    

    Bu yanıtı komut satırından da alıyorsanız — ki alacaksınız — tarayıcı tarafında yapılacak hiçbir şey yoktur. Sunucuya SSH ile bağlanma zamanı gelmiştir.

    Bir de şu ayrımı yapın: hata sürekli mi, aralıklı mı? Her istekte 502 alıyorsanız arka uç servis tamamen durmuştur. On istekten ikisinde alıyorsanız servis ayaktadır ama kapasitesi yetmiyordur. Bu iki senaryonun çözümü tamamen farklıdır, bu yüzden teşhise başlarken bunu ölçün:

    for i in $(seq 1 20); do curl -s -o /dev/null -w "%{http_code}\n" https://ornek.com; done | sort | uniq -c
    #   14 200
    #    6 502
    

    Karışık sonuç alıyorsanız doğrudan "Sebep 2"ye, yani kapasite bölümüne gidin.

    İlk Adım: Nginx error.log Dosyasını Okumak#

    502 hatasının gerçek sebebi neredeyse her zaman Nginx hata kaydındaki tek bir satırda yazılıdır ve o satırı okumak teşhisin tamamıdır.

    sudo tail -n 30 /var/log/nginx/error.log
    
    # Siteye özel log tanımlıysa:
    sudo tail -f /var/log/nginx/ornek.com.error.log
    

    tail -f çalışırken tarayıcıdan sayfayı yenileyin; o anda düşen satır tam olarak sizin isteğinize aittir. Aşağıdaki tablo, 502 ile birlikte gördüğüm satırları ve doğrudan işaret ettikleri sebebi eşliyor:

    error.log satırıAnlamıSebep
    connect() to unix:/run/php/php8.2-fpm.sock failed (2: No such file or directory)Soket dosyası yokPHP-FPM durmuş ya da soket yolu yanlış
    connect() to unix:... failed (13: Permission denied)Soket var, izin yokSoket sahipliği/izni Nginx kullanıcısıyla uyuşmuyor
    connect() to 127.0.0.1:9000 failed (111: Connection refused)Port dinlenmiyorPHP-FPM TCP yerine soket dinliyor ya da çalışmıyor
    recv() failed (104: Connection reset by peer) while reading response header from upstreamArka uç bağlantıyı kestiPHP süreci çöktü (segfault, OOM)
    upstream prematurely closed connection while reading response headerYanıt yarım kaldıSüreç öldürüldü ya da fatal error
    upstream sent too big header while reading response headerBaşlık tampona sığmadıfastcgi_buffer ayarları yetersiz
    no live upstreams while connecting to upstreamHavuzdaki tüm arka uçlar ölüupstream bloğundaki tüm hedefler yanıt vermiyor
    upstream timed out (110: Connection timed out)Süre dolduGenellikle 504 üretir, 502 ile karıştırmayın

    Satırın sonundaki upstream: alanı hangi arka uca gitmeye çalıştığını, host: alanı hangi siteye ait olduğunu gösterir. Çok siteli bir sunucuda bu iki alan olmadan doğru siteyi bulmak mümkün değildir.

    Nginx'in kendi yapılandırmasının geçerli olduğunu da doğrulayın; bozuk bir yapılandırma yeniden yüklenmemiş olabilir:

    sudo nginx -t
    # nginx: configuration file /etc/nginx/nginx.conf test is successful
    

    Sebep 1: PHP-FPM Çalışmıyor veya Soket Yolu Yanlış#

    No such file or directory satırı gördüyseniz sebep neredeyse kesinlikle budur ve iki ihtimali vardır: PHP-FPM servisi durmuştur ya da Nginx yanlış soketi arıyordur.

    Önce servisin durumuna bakın:

    systemctl status php8.2-fpm
    # ● php8.2-fpm.service - The PHP 8.2 FastCGI Process Manager
    #    Active: failed (Result: exit-code) since Mon 2026-08-11 03:12:44 UTC
    
    sudo systemctl restart php8.2-fpm
    

    Servis "failed" durumundaysa neden durduğunu öğrenmeden yeniden başlatmayın; aynı sebep birkaç saat sonra tekrar durdurur. Sebebi servis günlüğü verir:

    sudo journalctl -u php8.2-fpm -n 50 --no-pager
    

    Burada tipik olarak iki şey görürsünüz: ya bir yapılandırma hatası (havuz dosyasında sözdizimi hatası) ya da bellek yetersizliği nedeniyle çekirdeğin süreci sonlandırması. Servis günlüklerini okuma yöntemlerini journalctl ile log yönetimi yazısında ayrıntılı anlattık.

    Servis çalışıyor ama hata devam ediyorsa soket yolu uyuşmuyordur. İki tarafı da kontrol edin:

    # PHP-FPM hangi soketi açıyor?
    grep -R "^listen" /etc/php/8.2/fpm/pool.d/
    # /etc/php/8.2/fpm/pool.d/www.conf:listen = /run/php/php8.2-fpm.sock
    
    # Nginx hangi soketi arıyor?
    grep -R "fastcgi_pass" /etc/nginx/
    # /etc/nginx/sites-enabled/ornek.com:  fastcgi_pass unix:/run/php/php8.1-fpm.sock;
    

    Bu örnekteki uyuşmazlık gerçek hayatta çok sık yaşanır: PHP sürümü 8.1'den 8.2'ye yükseltilir, yeni FPM servisi yeni soketi açar, ama Nginx sanal sunucu dosyası hâlâ eski soketi gösterir. Sonuç: eski soket dosyası silindiği anda site 502 verir. Çözüm Nginx tarafındaki satırı düzeltip yeniden yüklemektir:

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.2-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
    
    sudo nginx -t && sudo systemctl reload nginx
    

    Permission denied satırı görüyorsanız soket vardır ama Nginx onu okuyamıyordur. Havuz dosyasındaki sahiplik ayarları Nginx'in çalıştığı kullanıcıyla eşleşmelidir:

    listen.owner = www-data
    listen.group = www-data
    listen.mode = 0660
    

    Soket ile TCP arasındaki tercih ve havuz yapılandırmasının tamamı için nginx php-fpm yapılandırma yazısına bakabilirsiniz.

    Sebep 2: pm.max_children Tükendi#

    Aralıklı 502 hatalarının en yaygın sebebi PHP-FPM havuzunun eşzamanlı istek kapasitesinin dolmasıdır. Bu durumda hata her istekte değil, yalnızca yoğunluk anlarında çıkar — bu yüzden sabah bakınca "her şey normal görünüyor" dersiniz.

    Kanıt PHP-FPM'in kendi logundadır:

    sudo grep -i "max_children" /var/log/php8.2-fpm.log
    # WARNING: [pool www] server reached pm.max_children setting (10), consider raising it
    

    Bu satırı gördüyseniz teşhis tamamlanmıştır. Havuz o anda yeni istek kabul edemediği için Nginx bağlantı kuramamış ve 502 dönmüştür.

    Değeri artırmadan önce hesabı yapın; körlemesine yükseltmek belleği tüketip sunucuyu tamamen düşürür. Formül basittir: bir PHP sürecinin ortalama bellek tüketimini ölçün, ayırabileceğiniz belleği ona bölün.

    # Ortalama PHP-FPM süreç belleği (MB)
    ps --no-headers -o rss -C php-fpm8.2 | awk '{s+=$1; n++} END {print s/n/1024 " MB, süreç sayısı: " n}'
    # 48.3 MB, süreç sayısı: 10
    
    # Toplam ve kullanılabilir bellek
    free -m
    

    4 GB belleğe sahip bir sunucuda MySQL ve işletim sistemi için 1,5 GB ayırıp geriye 2,5 GB kaldığını varsayalım. Süreç başına 50 MB ile 2560 / 50 ≈ 51 çıkar; güvenlik payı bırakarak 40 civarında bir değer makuldür.

    ; /etc/php/8.2/fpm/pool.d/www.conf
    pm = dynamic
    pm.max_children = 40
    pm.start_servers = 8
    pm.min_spare_servers = 6
    pm.max_spare_servers = 16
    pm.max_requests = 500
    

    pm.max_requests satırı kritiktir: bir süreç belirtilen sayıda isteği işledikten sonra kendini yeniden başlatır. Bu, bellek sızdıran bir eklentinin süreçleri şişirip sunucuyu boğmasını engeller. Değişiklikten sonra:

    sudo systemctl reload php8.2-fpm
    

    Yavaş isteklerin havuzu tıkadığından şüpheleniyorsanız yavaş istek günlüğünü açın — hangi PHP fonksiyonunun beklediğini satır satır gösterir:

    slowlog = /var/log/php8.2-fpm-slow.log
    request_slowlog_timeout = 5s
    

    Havuz ayarlarının her bir parametresini php-fpm pool ayarları yazısında tek tek açıkladık. Kapasite sorunu sürekli tekrar ediyorsa asıl sorun ayar değil, sunucunun yük altında kaldığıdır; linux load average anlamak yazısı bunu ölçmenin doğru yolunu anlatıyor.

    Sebep 3: 502 mi 504 mü — Zaman Aşımı Ayrımı#

    502 ile 504'ü ayırmak teşhisin yönünü tamamen değiştirir, bu yüzden ayrımı net koyalım. Arka uç bağlantıyı kabul etmiyorsa veya kesiyorsa 502 alırsınız. Arka uç bağlantıyı kabul ediyor ama yanıtı zamanında bitiremiyorsa 504 alırsınız.

    Uzun süren bir dışa aktarma, ağır bir rapor sorgusu ya da yavaş bir dış API çağrısı tipik 504 senaryolarıdır ve çözümü zaman aşımı değerlerini gözden geçirmektir:

    location ~ \.php$ {
        fastcgi_pass unix:/run/php/php8.2-fpm.sock;
        fastcgi_connect_timeout 10s;
        fastcgi_send_timeout    60s;
        fastcgi_read_timeout    60s;
    }
    

    Bu değerleri yükseltmek bir çözüm değil, bir erteleme yöntemidir; kalıcı çözüm uzun işlemi arka plana almak veya parçalara bölmektir. Aksi hâlde uzun süren istekler havuzu doldurur ve 504 hatası bir süre sonra kendisiyle birlikte 502 üretmeye başlar. Zaman aşımı tarafındaki tüm ayrıntılar için 504 gateway timeout hatası yazısına bakın.

    Bir de şu ince ayrıntı: PHP'nin kendi max_execution_time değeri ile Nginx'in fastcgi_read_timeout değeri uyumsuzsa garip sonuçlar alırsınız. PHP daha erken kesiyorsa yarım yanıt gider ve Nginx bunu 502 olarak yorumlar. İki değeri birbirine yakın tutun.

    Sebep 4: Başlık Tamponunun Yetersiz Kalması#

    upstream sent too big header while reading response header from upstream satırı, arka ucun gönderdiği HTTP başlıklarının Nginx'in ayırdığı tampona sığmadığını söyler. Bu hata özellikle çok sayıda çerez yazan, uzun oturum verisi taşıyan veya büyük yönlendirme başlıkları üreten uygulamalarda görülür ve tipik olarak yalnızca giriş yapmış kullanıcılarda ortaya çıkar — bu yüzden test ederken fark edilmez, canlıda patlar.

    Çözüm tampon değerlerini büyütmektir:

    fastcgi_buffer_size       32k;
    fastcgi_buffers        16 16k;
    fastcgi_busy_buffers_size 64k;
    
    # Ters vekil senaryosunda karşılığı:
    proxy_buffer_size         32k;
    proxy_buffers          8 32k;
    proxy_busy_buffers_size   64k;
    

    Değişiklikten sonra nginx -t ile doğrulayıp yeniden yükleyin. Değerleri gereksiz yere çok büyütmeyin; her bağlantı için bellek ayrılır ve yüksek eşzamanlılıkta bu maliyet katlanır.

    Sebep 5: Bellek Yetersizliği ve OOM Killer#

    Connection reset by peer ya da upstream prematurely closed connection satırları, arka uç sürecin yanıtı tamamlamadan öldüğünü söyler. Bunun en sık sebebi çekirdeğin bellek baskısı altında süreci sonlandırmasıdır.

    Doğrulaması tek komuttur:

    sudo dmesg -T | grep -i -E "out of memory|killed process"
    # [Mon Aug 11 03:12:41 2026] Out of memory: Killed process 20411 (php-fpm8.2) total-vm:...
    

    Bu satırı gördüyseniz sorun PHP-FPM yapılandırmasında değil, sunucunun bellek bütçesindedir. Sıralı yaklaşım şudur: önce pm.max_children değerini gerçekçi bir seviyeye indirin (evet, indirin — fazla süreç belleği tüketip toptan çökmeye yol açar), sonra bellek sızdıran bileşeni bulun, sonra takas alanı ekleyin, en son bellek yükseltin.

    free -m
    # Swap satırı 0 ise takas alanı yok demektir
    

    Takas alanı bellek yükseltmenin yerini tutmaz ama ani sıçramalarda sürecin öldürülmesini engeller; kurulumu swap alanı oluşturma linux yazısında anlattık. MySQL'in bellek ayarları da bu tabloya dâhildir; innodb_buffer_pool_size değerini sunucunun toplam belleğine göre fazla cömert ayarlamak, PHP süreçlerine yer bırakmadığı için dolaylı olarak 502 üretir.

    Cloudflare Arkasındaysanız: 502 mi 520 mi#

    Sitenizin önünde bir ara katman varsa hatanın kimin ürettiğini ayırt etmek gerekir. Hata sayfasında ara katmanın kendi markası ve bir ışın kimliği (ray ID) görünüyorsa hatayı o katman üretmiştir; sade bir "502 Bad Gateway – nginx" sayfası görünüyorsa hata sizin sunucunuzdan gelmektedir ve ara katman onu olduğu gibi iletmektedir.

    Kesin ayrımı yapmanın en pratik yolu ara katmanı atlayarak doğrudan sunucunun IP'sine istek göndermektir:

    curl -I --resolve ornek.com:443:185.10.20.30 https://ornek.com
    

    Bu istekte de 502 alıyorsanız sorun kesinlikle sizin sunucunuzdadır. Yalnızca ara katman üzerinden hata alıyorsanız bakılacak yer güvenlik duvarı kuralları ve ara katmanın kaynak IP aralıklarına erişimidir. Ara katmanın kendi ürettiği 5xx kodlarının anlamlarını cloudflare 520 521 522 hataları yazısında topladık.

    Kalıcı Çözüm: İzleme ve Otomatik Yeniden Başlatma#

    502 hatasını çözmek kadar önemlisi, tekrarında sitenin kendi kendini toparlamasıdır. İki katmanlı bir kurulum öneririm.

    Birinci katman: servisin otomatik yeniden başlaması. systemd bunu zaten yapabilir, yalnızca söylemeniz gerekir:

    sudo systemctl edit php8.2-fpm
    

    Açılan dosyaya şunu ekleyin:

    [Service]
    Restart=always
    RestartSec=3
    

    Böylece PHP-FPM beklenmedik biçimde durduğunda üç saniye içinde geri gelir ve kesinti dakikalar yerine saniyelerle ölçülür. Servis birimlerinin bu ayarlarını systemd servis yönetimi yazısında ayrıntılı ele aldık.

    İkinci katman: bakım sayfası. Arka uç ulaşılamadığında ziyaretçiye çıplak bir Nginx hata sayfası göstermek yerine kendi sayfanızı gösterebilirsiniz:

    error_page 502 503 504 /bakim.html;
    location = /bakim.html {
        root /var/www/hata;
        internal;
    }
    

    Üçüncü katman: haberdar olmak. Bir kesinti izleme servisi kurun ve site 502 döndüğünde bildirim alın. Hatayı ziyaretçi şikâyetiyle öğrenmek, ortalama kesinti süresini onlarca dakika uzatır. Kesinti süresinin taahhüdünüze etkisini merak ediyorsanız uptime sla hesaplayıcı aracıyla ayda kaç dakikalık bir bütçeniz olduğunu görebilirsiniz.

    Son olarak, tekrarlayan 502'ler bazen bir yapılandırma sorunu değil kapasite sinyalidir. Ayarları optimize etmenize rağmen havuz sürekli doluyorsa, sunucunun işlem gücü veya belleği artık trafiğinize yetmiyor demektir.

    Sıkça Sorulan Sorular#

    502 Bad Gateway hatasını ziyaretçi olarak çözebilir miyim#

    Hayır, 502 hatası tamamen sunucu tarafında oluşur ve ziyaretçinin yapabileceği bir şey yoktur. Sayfayı yenilemek yalnızca hata geçici bir yoğunluktan kaynaklandıysa işe yarar; kalıcı bir arıza varsa her yenilemede aynı yanıtı alırsınız. Tarayıcı önbelleğini temizlemek, farklı tarayıcı denemek veya DNS ayarlarını değiştirmek sonucu değiştirmez. Karşılaştığınız site size ait değilse yapılacak tek şey site sahibine bildirmek ve bir süre sonra tekrar denemektir.

    Nginx error.log dosyası nerede bulunur#

    Varsayılan konum Ubuntu ve Debian sistemlerinde /var/log/nginx/error.log, AlmaLinux ve Rocky gibi dağıtımlarda ise aynı dizinde benzer bir dosyadır. Sanal sunucu yapılandırmasında siteye özel bir error_log satırı tanımlıysa kayıt orada tutulur, bu yüzden önce grep -R "error_log" /etc/nginx/ komutuyla tanımlı yolları listelemek gerekir. Hatayı canlı yakalamak için tail -f ile dosyayı açık tutup sayfayı yenilemek en verimli yöntemdir. Böylece binlerce satır arasında hangi kaydın size ait olduğunu aramak zorunda kalmazsınız.

    PHP-FPM servisini yeniden başlatmak sorunu kalıcı çözer mi#

    Servisi yeniden başlatmak siteyi genellikle anında ayağa kaldırır ama bu bir teşhis değil, geçici bir müdahaledir. Servis kendiliğinden durduysa arkasında bir sebep vardır: bellek yetersizliği, havuz yapılandırmasındaki bir hata ya da sürekli çöken bir PHP eklentisi. journalctl -u php8.2-fpm çıktısına ve dmesg içindeki bellek uyarılarına bakmadan yeniden başlatırsanız aynı hata birkaç saat içinde tekrar eder. Doğru sıralama önce sebebi bulmak, sonra servisi yeniden başlatmaktır.

    pm.max_children değerini ne kadar yükseltmeliyim#

    Değeri sunucunun kullanılabilir belleğini bir PHP sürecinin ortalama bellek tüketimine bölerek hesaplamalısınız. Örneğin işletim sistemi ve veritabanı için pay ayırdıktan sonra PHP'ye 2,5 GB kalıyorsa ve süreç başına ortalama 50 MB tüketiliyorsa, güvenlik payıyla 40 civarında bir değer makuldür. Bu hesabı yapmadan değeri büyütmek en tehlikeli müdahaledir; süreçler belleği tüketir, çekirdek süreçleri öldürmeye başlar ve site tamamen çöker. Ortalama tüketimi ps çıktısındaki RSS değerlerinin ortalamasını alarak ölçebilirsiniz.

    502 ile 504 hatası arasındaki fark nedir#

    502, ters vekil sunucunun arka uçtan geçersiz bir yanıt aldığını veya hiç bağlantı kuramadığını gösterir; 504 ise bağlantının kurulduğunu ama yanıtın belirlenen süre içinde tamamlanmadığını gösterir. Pratikte 502 servisin ölü ya da ulaşılamaz olduğunu, 504 ise servisin çalıştığını fakat işlemin çok uzun sürdüğünü söyler. Bu ayrım çözümü tamamen değiştirir: 502'de servis durumuna ve soket yoluna, 504'te ise sorgu performansına ve zaman aşımı değerlerine bakılır. Nginx hata kaydındaki satır bu ayrımı doğrudan verir.

    Sitede 502 hatası sadece bazen çıkıyor, sebebi ne olabilir#

    Aralıklı 502 hataları neredeyse her zaman kapasite sorununa işaret eder. PHP-FPM havuzu eşzamanlı istek sınırına ulaştığında yeni istekleri kabul edemez ve o anki ziyaretçiler hata alırken diğerleri siteyi sorunsuz görür. Bunu doğrulamak için PHP-FPM logunda server reached pm.max_children setting uyarısını aramak yeterlidir. Aynı belirti, bellek sızdıran bir eklentinin süreçleri şişirdiği durumlarda da ortaya çıkar; pm.max_requests ayarı süreçleri belirli aralıklarla yenileyerek bu etkiyi sınırlar.

    Ters vekil arkasında Node.js uygulaması çalıştırıyorum, 502 alıyorum#

    Bu durumda hata neredeyse her zaman Node.js sürecinin çökmüş ya da beklenen portu dinlemiyor olmasından kaynaklanır. Önce curl -I http://127.0.0.1:3000 gibi bir komutla uygulamanın doğrudan yanıt verip vermediğini test edin; yanıt yoksa sorun Nginx'te değil uygulamadadır. Süreç yönetimi için bir yönetici kullanmıyorsanız uygulama bir hatada çökünce bir daha ayağa kalkmaz, bu yüzden süreç yöneticisiyle çalıştırmak ve otomatik yeniden başlatmayı açmak şarttır. Nginx tarafındaki proxy_pass adresinin uygulamanın gerçekten dinlediği port ile eşleştiğini de doğrulayın.

    502 hatası SEO'ya zarar verir mi#

    Kısa süreli bir 502 kesintisinin kalıcı bir olumsuz etkisi olmaz, çünkü arama motoru tarayıcıları geçici sunucu hatalarında sayfayı dizinden çıkarmaz ve bir süre sonra tekrar dener. Ancak hata günlerce sürerse tarama sıklığı düşer ve etkilenen sayfaların dizindeki durumu bozulabilir. Bu nedenle uzun süren kesintilerde bakım sayfası döndürmek ve kesintiyi mümkün olduğunca kısa tutmak önemlidir. Kesinti izleme kurmanın asıl faydası da budur: hatayı ziyaretçiden ve arama motorundan önce siz görürsünüz.

    Kapanış#

    502 Bad Gateway hatası ilk bakışta karanlık görünse de teşhisi son derece mekaniktir: Nginx ayaktadır, arkasındaki servis değildir. Hata kaydındaki tek bir satır — No such file or directory, Permission denied, Connection reset by peer ya da server reached pm.max_children — sizi doğrudan doğru sebebe götürür. Soket yolu uyuşmazlığı, havuz kapasitesinin dolması, tampon yetersizliği ve bellek baskısı; pratikte karşılaşacağınız senaryoların neredeyse tamamı bu dört başlığın altındadır. Çözümden sonra Restart=always ile otomatik kurtarmayı ve bir kesinti izlemesini kurmak, aynı hatanın bir dahaki sefere dakikalar yerine saniyeler sürmesini sağlar.

    Ayarları optimize etmenize rağmen havuz sürekli doluyor ve 502 yoğunluk saatlerinde geri geliyorsa, artık sorun yapılandırma değil kapasitedir. Böyle bir noktadaysanız izole kaynak veren VDS sunucu paketleri ya da yükü esnek biçimde ölçekleyebileceğiniz bulut sunucu çözümleri kalıcı rahatlama sağlar. Nginx, PHP-FPM ve güvenlik duvarı yapılandırmasını kendiniz yönetmek istemiyorsanız sunucu yönetimi hizmeti bu ayarları, izlemeyi ve müdahaleyi sizin adınıza üstlenir; mevcut kurulumunuzu kesintisiz taşımak istiyorsanız site taşıma hizmeti geçiş sırasında yapılandırmanın da doğru kurulmasını sağlar.

    hata kodlarınginxsunucu

    Uygulamaya geçmeye hazır mısınız?

    NVMe SSD, ücretsiz SSL ve %99.9 uptime garantisiyle Clou.TR hosting ve sunucu çözümleriyle projenizi hayata geçirin.