Ana içeriğe geç

502 Kötü Ağ Geçidi: fiilen ne anlama gelir ve nasıl düzeltilir

· 3 dakikalık okuma
Customer Care Engineer

502-kotu-ag-gecidi-hatasi-nginx-php-fpm-duzeltme-rehberi

Web sitenizi açarsınız ve içerik yerine 502 Kötü Ağ Geçidi yazan boş bir sayfa görürsünüz. Korkutucu görünebilir, ancak çoğu durumda çözümü basittir. Neler olup bittiğini ve sitenizi nasıl geri alacağınızı inceleyelim.

502 ne anlama geliyor?

Bir ziyaretçi bir sayfayı istediğinde, istek genellikle iki katmandan geçer: bir ön yüz web sunucusu (genellikle Nginx) ve bir arka yüz uygulama sunucusu (PHP-FPM, Apache, Node.js veya başka bir şey). Nginx isteği alır, arka uca iletir ve bir yanıt bekler.

502 Kötü Ağ Geçidi, Nginx'in arka uçtan bir yanıt almaya çalıştığı, ancak geçersiz bir şey aldığı veya hiç yanıt alamadığı anlamına gelir. Arka uç ya çöktü, bağlantıyı reddetti ya da Nginx'in anlayamayacağı bir şey döndürdü.

bilgi

Yaygın bir yanılgı: 502, sunucunuzun kapalı olduğu anlamına gelmez. Sunucunun kendisi iyidir - sorun, Nginx'in arkasındaki uygulamayla ilgilidir.

En yaygın nedenler

Arka uç hizmeti durdu. Bu bir numaralı nedendir. PHP-FPM çöktü, Apache takıldı veya bir Node.js işlemi sessizce sonlandı. Nginx'in konuşacak kimsesi yok.

Sunucu RAM'i tükeniyor. Bellek azaldığında, Linux kaynak yoğun işlemleri otomatik olarak sonlandırabilir. Bu mekanizmaya OOM killer denir ve PHP-FPM veya MySQL genellikle ilk kurbanları olur. Bu düzenli olarak oluyorsa, bir güvenlik önlemi olarak takas dosyası eklemeyi düşünün.

PHP-FPM çalışan havuzu tükendi. Siteniz, PHP-FPM'nin işleyebileceğinden daha fazla eş zamanlı istek alırsa, yeni istekler kuyruğa girer ve sonunda zaman aşımına uğrar. Bu genellikle arama motoru botları sitenizi çok agresif bir şekilde taradığında olur - bununla bot engelleme kılavuzumuzda başa çıkma hakkında yazdık.

Yanlış yapılandırılmış soket veya bağlantı noktası. Nginx, PHP-FPM'yi belirli bir Unix soketinde veya TCP bağlantı noktasında bulmayı bekler. Nginx yapılandırmasındaki yol PHP-FPM yapılandırmasıyla eşleşmiyorsa, herhangi bir değişiklikten hemen sonra 502 hataları görürsünüz.

Nasıl teşhis edilir

Aşağıdaki adımları gerçekleştirmek için SSH üzerinden sunucunuza bağlanın. Bunu nasıl yapacağınızı SSH makalemizde öğrenebilirsiniz.

Adım 1. Arka uca bağlanıp bağlanmadığını kontrol edin

Arka uç hizmetinizin durumunu kontrol edin:

sudo systemctl status php8.2-fpm

php8.2-fpm yerine gerçek PHP sürümünüzü veya arka uç hizmet adınızı girin. Çıktı inactive (dead) veya failed diyorsa, sorun budur. Yeniden başlatın:

sudo systemctl restart php8.2-fpm

Ardından, başarılı bir şekilde başladığından emin olmak için durumu tekrar kontrol edin.

Adım 2. Nginx hata günlüğünü kontrol edin

Hata günlüğü neredeyse her zaman neyin yanlış gittiğini tam olarak söyler:

sudo tail -30 /var/log/nginx/error.log

Eğer FASTPANEL® kullanıyorsanız, günlükleri doğrudan web arayüzünden de görüntüleyebilirsiniz: site kartını açın, "Günlükler" bölümüne gidin ve "Ön Yüz Hata Günlüğü" sekmesini kontrol edin.

İşte en yaygın hata mesajları ve ne anlama geldikleri:

connect() failed - Connection refused - arka uç hizmeti çalışmıyor. 1. Adımda gösterildiği gibi yeniden başlatın.

connect() failed - No such file or directory - Nginx mevcut olmayan bir Unix soketine erişmeye çalışıyor. Nginx yapılandırmanızdaki soket yolunun, PHP-FPM'nin gerçekten oluşturduğu yolla eşleştiğinden emin olun.

upstream sent too big header - arka uç, varsayılan arabellek için çok büyük HTTP üstbilgileri döndürdü. Nginx sitenin server bloğu içine bu satırları ekleyin:

fastcgi_buffers 16 16k;
fastcgi_buffer_size 32k;

Düzenledikten sonra yapılandırmayı test edin ve Nginx'i yeniden yükleyin:

sudo nginx -t && sudo systemctl reload nginx

Adım 3. Sunucu kaynaklarını kontrol edin

free -h

Eğer available sütunu 100-200 MB'tan az boş bellek gösteriyorsa, sunucunuz muhtemelen RAM'i tükeniyor demektir. Neyin tükettiğini kontrol edin:

ps aux --sort=-%mem | head -10
warning

Bellek baskısı kök nedeniyse, en hızlı geçici çözüm bir takas dosyası eklemektir. Ancak, diskteki takas RAM'den çok daha yavaştır ve kalıcı bir çözüm olarak görülmemelidir. Sunucunuz düzenli olarak bellek tükeniyorsa, ya uygulamalarınızı optimize etme ya da daha fazla RAM içeren bir plana yükseltme zamanı gelmiş demektir.

Sonuç

502 Kötü Ağ Geçidi neredeyse her zaman bir arka uç sorunudur - çökmüş bir hizmet, tükenmiş çalışanlar veya yeterli bellek olmaması. Arka uç durumunu kontrol edin, Nginx hata günlüğünü okuyun ve kaynak kullanımınıza bakın. Çoğu durumda, cevabı birkaç dakika içinde bulacaksınız.

Bununla tek başınıza uğraşmak istemiyorsanız, kodu.cloud olarak her VPS ve dedicated sunucumuzda ücretsiz 7/24 teknik destek sağlıyoruz. Tüm müşterilerimiz ayrıca, günlük analizi ve hizmet yönetimini bir web arayüzü aracılığıyla önemli ölçüde kolaylaştıran FASTPANEL® Extended'ı ek bir maliyet olmadan alırlar.