Bir HTTP isteği alan herhangi bir web sunucusu, bir HTTP durum kodu ile yanıt verir. Bu kodlar, sunucudan durumu açıklayan kısa notlardır. Gerçek bir site içeriği içermez. Bunun yerine, HTTP isteği alındıktan sonra işlerin nasıl gittiğine dair bir rapordur. Birçok durumda, bu kodlar çeşitli sunucu/istemci sorunlarını teşhis etmek için önemlidir.
Bu kodlar, her biri çeşitli durumları belirten üç haneli tam sayılardır. İlk haneye göre HTTP kodları beş kategoriye ayrılır:
-
Bilgi yanıtları: Değer 100 ile 199 arasındadır. İsteğin alındığını ve işlenmekte olduğunu belirtir.
-
Başarılı yanıtlar: Değer 200 ile 299 arasındadır. Eylemin başarıyla alındığını, anlaşıldığını ve kabul edildiğini belirtir.
-
Yönlendirme mesajları: Değer 300 ile 399 arasındadır. İsteği tamamlamak için daha fazla işlem yapılması gerektiği anlamına gelir.
-
İstemci hatası yanıtları: Değer 400 ile 499 arasındadır. İstek ya geçersiz sözdizimi içeriyordur ya da yerine getirilemiyordur.
-
Sunucu hatası yanıtları: Değer 500 ile 599 arasındadır. Sunucunun geçerli bir isteği işleyemediği anlamına gelir.
Bu kılavuzda, bir sistem yöneticisi perspektifinden herkesin karşılaştığı en yaygın HTTP hata kodlarından bazılarını (4xx ve 5xx) ele alacağız. Web sunucusunun belirli bir kodla yanıt vermesine yol açabilecek çok sayıda durum vardır. Ayrıca bu eğitimde, olası nedenler ve çözümler de tartışılacaktır.
İstemci ve Sunucu Hataları
400 ile 499 arasındaki hata kodları, kullanıcı istemcisinden (bir web tarayıcısı veya herhangi bir HTTP istemcisi) kaynaklanır. Hatalar çoğunlukla istemci kaynaklı olsa da, kullanıcının hangi kodu aldığını bilmek faydalıdır. Bu, olası bir sorunun sunucu tarafında çözülüp çözülemeyeceğini belirlemeye yardımcı olabilir.
Diğer yandan sunucu hataları (HTTP durum kodu 500 ila 599), sunucu bir hatanın oluştuğunun farkında olduğunda veya isteği işleyemediğinde meydana gelir.
Genel Sorun Giderme
Hatadan bağımsız olarak, herhangi bir HTTP hata koduyla karşılaştığınızda ilk olarak denemeniz gereken bazı genel sorun giderme ipuçları şunlardır:
-
Sunucuyu test etmek için bir web tarayıcısı kullanırken, sunucuda herhangi bir değişiklik yaptıktan sonra tarayıcıyı yenilemek iyi bir uygulamadır.
-
Sunucu günlüğü, sunucunun istekleri nasıl işlediği hakkında ayrıntılı bilgi tutar. Örneğin, Apache ve Nginx gibi popüler web sunucuları şu dosyaları üretir: access.log ve error.log. Bu günlükleri kontrol etmek yararlı bilgiler sağlayabilir.
-
HTTP hata kodları bir standardın parçasıdır. Programlar, istekleri nasıl ele aldıklarına bağlı olarak bu standardı uygularlar. Bu, sunucu yazılımının belirli bir hatayı nasıl ele aldığına bağlı olarak belirli bir durum kodunun döndürüldüğü anlamına gelir.
Bu kılavuz, sorunun kaynağını bulmada yararlı bir rehber görevi görmelidir.
Yaygın HTTP Hataları
-
Yaygın İstemci Hataları

400 hata kodu, Geçersiz İstek (Bad Request) anlamına gelir. Sunucuya gönderilen HTTP isteğinin geçersiz sözdizimi içerdiğini belirtir. Geçersiz sözdizimlerinin olası kaynaklarına bir göz atalım:
-
Siteyle ilgili çerezler bozulmuş olabilir. Tarayıcı çerezlerini ve önbelleğini temizlemek sorunu çözebilir.
-
İsteği gönderen web tarayıcısı hatalı/hatalar barındırıyor olabilir.
-
HTTP isteklerini manuel olarak oluştururken yapılan bir hata nedeniyle geçersiz bir istek olabilir, örneğin şunun yanlış kullanımı: curl.

401 (Yetkisiz) hata kodu, istek kimliği doğrulanmamış veya doğru şekilde doğrulanmamış kaynaklara erişmeye çalıştığında oluşur. Sorunu çözmek için kullanıcının korunan kaynağa erişmek üzere gerekli kimlik bilgilerini sağlaması gerekir.
Örnek bir durum, kullanıcının HTTP kimlik doğrulaması ile korunan bir kaynağa erişmeye çalışmasıdır. Böyle bir durumda, geçerli bir kullanıcı adı ve şifre sağlanmadığı sürece kullanıcı 401 hata kodu alacaktır.

403 (Yasaklandı) hata kodu, kullanıcı isteğinin geçerli olduğu ancak sunucunun isteğe yanıt vermeyi reddettiği bir durumu ifade eder. Bu, istenen kaynağa erişim izninin olmamasından kaynaklanabilir. Bu soruna yol açabilecek birkaç senaryo vardır:
-
Dosya izinleri: Sunucunun istenen dosyaya erişmek için yeterli izni yoksa, bu durum 403 hatasına yol açabilir. Olası çözümler arasında sunucunun web sunucusunun dizin dosyasına erişmeye çalıştığının, çalışan işlemin sahibi olan www-data kullanıcısı olduğunu ve dizin dosyasının doğru konumda bulunduğunu doğrulamak yer alır (Nginx durumunda bu konum: /usr/share/nginx/html/index.html).
-
.htaccess: Web sunucuları, .htaccess dosyasını belirli IP adreslerini veya aralıklarını filtrelemek gibi çeşitli güvenlik özelliklerini uygulamak için kullanır. Olası bir çözüm, HTTP isteğinin geldiği IP adresinin engellenmediğini doğrulamayı içerir.
-
Dosya mevcut değil: İstek, varsayılan bir dizin dosyası olmayan ve dizin listelemenin etkinleştirilmediği bir konuma erişmeye çalışıyorsa, sunucu 403 hatası döndürür. Böyle bir durumda olası bir çözüm, dizin listelemeye izin verecek şekilde sunucu yapılandırmasını ayarlamaktır.

404 (Bulunamadı) hata kodu, kullanıcının web sunucusuna başarıyla bağlanabildiği ancak istenen kaynağı bulamadığı anlamına gelir. Bu hata birçok durumda ortaya çıkabilir. İşte bazı olası sorun giderme adımları:
-
Kullanıcıyı sunucu kaynağına yönlendiren bağlantıda olası bir yazım hatası olup olmadığını kontrol edin.
-
Kullanıcı URL'yi yanlış yazmış olabilir. Durumun bu olup olmadığını kontrol edin ve gerekirse düzeltin.
-
Dosyanın sunucuda var olup olmadığını doğrulayın. Sunucudan taşındı mı yoksa silindi mi?
-
Sunucu yanlış belge kök dizini konumuyla yapılandırılmış olabilir. Bunu kontrol edin ve uygunsa düzeltin.
-
Kullanıcıya ait web sunucusu çalışan işleminin istenen dosyayı tarama izni var mı? Bir dizine erişmek için hem okuma hem de yürütme izinlerine sahip olunması gerektiğini unutmayın.
-
Kaynak bir sembolik bağlantı mı? Bu durumda, sunucunun sembolik bağlantıları izleyecek şekilde yapılandırılması gerekir.
-
Yaygın Sunucu Hataları

500 (Dahili Sunucu Hatası) hata kodu, sunucu bilinmeyen nedenlerle isteği işleyemediğinde oluşur. Bazı durumlarda, daha spesifik bir 5xx hata kodu uygun olabilecekken sunucu 500 hatası bildirebilir.
500 hatasının en yaygın kaynaklarından biri, yanlış yapılandırılmış bir sunucudur; örneğin, hatalı biçimlendirilmiş bir .htaccess dosyası. Ayrıca, sistemde PHP kurulu olmadan PHP kodlarını çalıştırmaya çalışmak gibi eksik paketlerin olması durumunda da ortaya çıkabilir.

502 (Kötü Ağ Geçidi) hata kodu, sunucunun bir proxy veya ağ geçidi olduğunu ve arka uç sunucusundan (isteği fiilen yerine getirmekle yükümlü olan) geçerli bir yanıta ulaşamadığını belirtir. Sunucu bir ters proxy ise (örneğin bir yük dengeleyici), kontrol edilmesi gereken birkaç farklı şey vardır:
-
Arka uç sunucuları sağlıklı çalışıyor.
-
Ters proxy düzgün şekilde yapılandırılmış (uygun arka uç özellikleri ile).
-
Ters proxy ile arka uç sunucusu arasındaki bağlantı sağlıklı. Sunucular farklı bağlantı noktalarını kullanarak iletişim kurabiliyorsa, güvenlik duvarı bu bağlantı noktalarına giden bağlantıya izin vermelidir.
-
Web uygulaması bir soket kullanacak şekilde yapılandırılmışsa, soketin doğru konumda ve uygun izinlerle mevcut olduğundan emin olun.

503 (Hizmet Dışı) hata kodu, sunucunun aşırı yüklenme yaşadığını veya şu anda bakımda olduğunu belirtir. Bu, sunucunun bir noktada tekrar kullanılabilir hale gelmesi gerektiği anlamına gelir.
Sunucu bakımda değilse, bu durum sunucunun gelen istekleri karşılamak için gerekli donanım kaynaklarına (işlem gücü, bellek vb.) sahip olmadığını gösterir. Böyle bir durumda, sunucu daha fazla kullanıcıya izin verecek veya daha fazla kaynak ayıracak şekilde yapılandırılmalıdır.
504 (Ağ Geçidi Zaman Aşımı) hata kodu, sunucunun bir proxy veya ağ geçidi sunucusu olduğunu ve izin verilen zaman penceresi içinde arka uçtan yanıt almadığını belirtir. Bu soruna yol açabilecek birkaç durum vardır:
-
Sunucular arasında kötü bir ağ bağlantısı.
-
Arka uç sunucusunun çok yavaş çalışması (performans sorunları nedeniyle).
-
Ağ geçidi/proxy sunucusu zaman aşımı sınırının çok dar olması.
Son Düşünceler
Bu kılavuz, özellikle en yaygın olanlardan bazıları olmak üzere HTTP hata kodlarını ele almaktadır. Kodların ne anlama geldiğini açıklar ve olası sorun giderme eylemleri için öneriler sunar. Bu bilgiyle, artık web sunucularınız veya uygulamalarınızla ilgili sorunları gidermek için sağlam bir temele sahipsiniz.
Bu, en popüler HTTP durum kodlarının yalnızca kısa bir listesidir. Tüm HTTP durum kodlarının kapsamlı bir listesi için, Wikipedia'daki HTTP durum kodlarına göz atın. Ayrıca şu konudaki eğitimimize de göz atabilirsiniz: Nginx HTTP Proxying, Load Balancing, Buffering, and Caching: Genel Bir Bakış.
Keyifli bilişimler!
Yorumlar
Henüz yorum yapılmamış. İlk siz olun.