Tiesto

WFN Üye
Konular
635
Mesajlar
635
Çözüm
0
Ticaret Puanı
0
Üyelik
24 Gün
Konum
Antalya
Web Sitesi
Var
Alanı
Domain Uzmanı
1/1
Konu sahibi
Nginx 502 Bad Gateway hatasını çözmek için önce hatanın oluştuğu andaki Nginx hata günlüğünü okuyun; ardından isteğin yönlendirildiği uygulama sunucusunu veya PHP-FPM servisini, bağlantı adresini ve izinlerini kontrol edin. Hata çoğunlukla Nginx'in arka uçtan geçerli bir yanıt alamamasıyla ilgilidir; ancak yalnızca 502 koduna bakarak hangi bileşenin bozulduğunu belirleyemezsiniz.

Hatanın hangi bağlantıda oluştuğunu bulun​


Sunucuya SSH ile ve gerekli yönetici yetkisiyle bağlanın. Hata veren sayfayı bir kez açıp saatini not edin. Ardından Nginx yapılandırmasını görüntüleyin:

Kod:
sudo nginx -T

Çıktıda ilgili alan adına ait server bloğunu, error_log yolunu ve istekleri arka uca gönderen proxy_pass veya fastcgi_pass satırını arayın. Günlük dosyası yapılandırmaya göre değişebilir; aşağıdaki yol yalnızca bir örnektir:

Kod:
sudo tail -n 100 /var/log/nginx/error.log

Saat ve istekle eşleşen kayıtta bağlantı adresine ve hata mesajına bakın. Günlük dosyası yerine sistem günlüğü veya konteyner çıktısı kullanılıyorsa, kuruluma uygun kayıtları inceleyin. nginx -T çıktısı ve günlükler hassas bilgi içerebilir; bunları paylaşmadan önce parolaları, belirteçleri, kişisel verileri ve gizli adresleri temizleyin.

Aşağıdaki mesajlar başlangıç noktasıdır; kesin nedeni arka uç kayıtları ve yapılandırmayla doğrulayın.
Günlükteki ifadeİlk kontrol
connection refusedServis çalışıyor mu, doğru adres ve portu mu dinliyor?
No such file or directoryBelirtilen Unix soketi mevcut mu, yolu doğru mu?
Permission deniedNginx çalışanının sokete veya bağlantıya erişim izni var mı?
upstream prematurely closed connectionArka uç uygulama hatası veya işlem sonlanması kaydetmiş mi?
Örneğin bağlantının reddedilmesi, tek başına servisin çöktüğünü kanıtlamaz: servis farklı bir portta da çalışıyor olabilir. Hata kaydında hiç upstream bağlantısı görünmüyorsa 502'yi başka bir katman veya uygulamanın kendisi üretmiş olabilir; istek zamanı ve yanıtı ilgili katmanların kayıtlarıyla karşılaştırın.

Arka uç servisini ve adresini düzeltin​


Nginx'in yönlendirdiği servisin adını dağıtımınızın veya uygulamanızın yapılandırmasından belirleyin. Systemd kullanan bir sunucuda, aşağıdaki örnekteki SERVIS_ADI yerine gerçek servis adını yazarak durumunu ve son kayıtlarını inceleyin:

Kod:
sudo systemctl status SERVIS_ADI
sudo journalctl -u SERVIS_ADI -n 100 --no-pager

Servis durmuşsa günlükteki başlatma hatasını düzeltin ve ilgili servisi başlatın. Çalışır durumdaysa bunun doğru adresi dinlediğini ayrıca kontrol edin; servis durumunun aktif olması uygulamanın doğru yanıt verdiğini kanıtlamaz. TCP bağlantısı kullanılıyorsa sudo ss -ltnp çıktısındaki adres ve portu Nginx yapılandırmasıyla karşılaştırın. Uygulama başka bir sunucu veya konteynerdeyse kontrolü o ortamda da yapın; 127.0.0.1 her ortamda o ortamın kendisini gösterir.

PHP-FPM soketini kontrol edin​


PHP sitelerinde fastcgi_pass ile gösterilen adres, ilgili PHP-FPM havuzunun listen değeriyle uyuşmalıdır. Örneğin Nginx /run/php/site.sock soketine bağlanacak şekilde ayarlanmışsa PHP-FPM de aynı soketi dinlemelidir. Yollar örnektir; kendi yapılandırmanızı esas alın.

Soket yoksa PHP-FPM servisinin çalıştığını, doğru havuzun yüklendiğini ve gerçek listen değerini kontrol edin. Soket varsa ls -l /run/php/site.sock ile sahip ve grup izinlerine bakın; Nginx çalışanının erişmesi gerekir. Linux'ta gerekirse PHP-FPM havuzundaki listen.owner, listen.group ve listen.mode değerlerini mevcut Nginx kullanıcısına ve grubuna uygun biçimde düzeltin. Soketi herkese yazılabilir yapmak yerine yalnız gerekli erişimi verin. PHP-FPM'nin TCP portunu herkese açık internete açmayın.

Havuz ayarını kaydettikten sonra kurulumunuzun PHP-FPM yapılandırma testini çalıştırın; başarılıysa ilgili servisi yeniden yükleyin veya kullandığınız servis yöneticisinin gerektirdiği şekilde yeniden başlatın. Soketin oluştuğunu ve izinlerini tekrar kontrol edin.

HTTP uygulamasını doğrudan sınayın​


proxy_pass bir HTTP uygulamasına yöneliyorsa, Nginx'in bulunduğu ortamdan yapılandırmadaki gerçek adresi sınayın. Örneğin arka uç yerel olarak 8080 portunu dinliyorsa:

Kod:
curl -i http://127.0.0.1:8080/

Bağlantı kurulamıyorsa uygulamanın çalışmasını, dinlediği adresi ve aradaki ağ kurallarını inceleyin. HTTP yanıtı gelmesi bağlantının kurulduğunu gösterir; tek başına sorunlu sayfanın veya Nginx üzerinden yapılan isteğin doğru çalıştığını kanıtlamaz. Uygulama belirli bir alan adı ya da yol bekliyorsa, testi ilgili istekle ve uygun Host başlığıyla tekrarlayın. PHP-FPM bir FastCGI servisi olduğundan bu HTTP testini doğrudan FPM portuna uygulamayın.

Değişikliği uygulayın ve sonucu doğrulayın​


Nginx adresini veya başka bir yapılandırma değerini değiştirdiyseniz önce dosyayı kaydedin, ardından aynı kurulum için yapılandırmayı sınayın ve yalnızca test başarılıysa yeniden yükleyin:

Kod:
sudo nginx -t
sudo systemctl reload nginx

Test hata verirse gösterilen dosya ve satırı düzeltmeden yeniden yüklemeyin. Systemd kullanılmayan kurulumlarda kendi servis yöneticinizin yeniden yükleme yöntemini kullanın. Ardından hatalı sayfayı tekrar açın ve yeni hata kayıtlarını kontrol edin. Sayfanın bir kez açılması kalıcı çözümü garanti etmez; sorun yük altında veya belirli bir işlemde oluşuyorsa o isteği güvenli biçimde yeniden deneyin.

Arka uç bağlantıyı erken kapatıyorsa uygulama ve servis günlüklerinde aynı zamandaki çökme, bellek yetersizliği veya işlem hatalarını araştırın. Zaman aşımı görüyorsanız yalnızca süre sınırını artırmak yerine yavaş işlemin nedenini de inceleyin; zaman aşımı her durumda 502 üretmez. Sorun sürüyorsa sunucu yöneticisine veya barındırma desteğine hata zamanı ve saat dilimini, etkilenen adresi, temizlenmiş Nginx hata satırını, arka uç servisinin durumunu ve yaptığınız kontrolleri iletin; ilgili arka uç bağlantısının ve servis günlüklerinin incelenmesini isteyin.
 

Sende şimdi bize katılmak ister misin?

Kayıt ol

Bize katılım kolay ve ücretsizdir!

Foruma git ?

Bu konuyu görüntüleyen kullanıcılar

Bu konuyu şu anda görüntüleyen üye bulunmuyor.
Robotlar:
  • Anthropic