- Konu sahibi
- #1
HTTP server nedir?
HTTP server, tarayıcı veya başka bir istemciden gelen HTTP isteklerini alıp uygun HTTP yanıtını döndüren yazılımdır. Web sayfası, görsel, CSS, JavaScript, JSON veya API verisi sunabilir. Kullanıcının bağlandığı makine fiziksel ya da sanal bir sunucu olabilir; “HTTP server” ise öncelikle bu isteği işleyen yazılımı ifade eder.
Bir kullanıcı tarayıcıya bir web adresi yazdığında genel akış şöyledir: Tarayıcı alan adını bir IP adresine çözer, sunucuya bağlantı kurar ve bir HTTP isteği gönderir. HTTP server isteğin yolunu, yöntemini ve başlıklarını değerlendirir; dosyayı doğrudan sunar, bir uygulamaya iletir veya uygun hata yanıtını döndürür. Yanıt; durum kodu, başlıklar ve varsa içerikten oluşur.
HTTP server ile web sitesi arasındaki fark
Web sitesi, kullanıcının gördüğü içerik ve işlevlerin tamamıdır. HTTP server ise bu içeriğin istemciye ulaştırılmasını sağlayan katmandır. Statik bir sitede HTML dosyalarını doğrudan sunabilir. Dinamik bir sitede ise isteği PHP, Python, Node.js veya başka bir uygulamaya aktarabilir; uygulamanın ürettiği sonucu kullanıcıya iletir.
HTTPS, HTTP’nin TLS ile şifrelenmiş biçimidir. Bu nedenle “HTTP server” genel bir kavram olarak hem şifrelenmemiş HTTP hem de HTTPS isteklerini işleyen sunucu yazılımlarını kapsayabilir. Şifreleme katmanı doğrudan web server’da bulunabileceği gibi, önde duran bir reverse proxy tarafından da sonlandırılabilir.
Somut istek örneği
Bir tarayıcı
/urunler yolunu istediğinde sunucu şu kararlardan birini verebilir:- Bu yol bir dosyaya karşılık geliyorsa dosyanın içeriğini gönderir.
- Bu yol bir uygulama rotasıysa isteği uygulamaya aktarır ve uygulama yanıtını gönderir.
- Kimlik doğrulama/erişim gerekiyorsa uygulamanın tasarımına göre doğrulama ister, girişe yönlendirir veya reddetme yanıtı verir.
- Hiçbir eşleşme yoksa bulunamadı yanıtı döndürür.
Yanıttaki durum kodu sorunun hangi katmanda olduğunu anlamaya yardım eder:
| Kod grubu | Anlamı | Tipik yorum |
|---|---|---|
| 2xx | Başarılı işlem | İçerik veya işlem sonucu döndürülmüştür. |
| 3xx | Yönlendirme | Örneğin301 adres yönlendirmesi,304 kayıtlı temsilin yeniden kullanılmasıdır. |
| 4xx | İstemci isteği sorunu | Yanlış yol, yetki veya kimlik doğrulama problemi olabilir. |
| 5xx | Sunucu tarafı sorunu | Uygulama, proxy veya backend yanıt üretememiş olabilir. |
Bu kod tek başına kesin kök nedeni göstermez. Örneğin 404, dosyanın silinmesi kadar yanlış yönlendirilmiş bir uygulama rotasından da kaynaklanabilir. 502 veya 504 gibi bir proxy hatasında ise öndeki sunucu çalışıyor olabilir; asıl sorun arkadaki uygulama veya bağlantı olabilir.
Yönetimde hangi katmanı seçmelisiniz?
- Yalnızca HTML, CSS, JavaScript ve görsel sunuyorsanız statik dosya sunabilen bir HTTP server yeterlidir.
- Dinamik uygulamanız varsa HTTP server’ın uygulama çalışma süreciyle nasıl haberleşeceğini belirleyin. Bu görev doğrudan sunum, proxy veya uygulama sunucusu düzeniyle yapılabilir.
- Birden fazla site veya uygulama için sanal host ya da uygun ters vekil düzenini seçin. Her çoklu sitede ayrı reverse proxy zorunlu değildir.
- Sorun çıktığında önce istemcinin aldığı durum kodunu, sonra HTTP server erişim ve hata kayıtlarını, ardından uygulama kayıtlarını karşılaştırın.
- Değişiklikten sonra hem ana sayfayı hem de bir statik dosyayı ve uygulamaya ait bir rotayı ayrı ayrı test edin. Böylece sorunun sunucu yapılandırmasında mı, dosyada mı, uygulamada mı olduğunu daraltabilirsiniz.
Başarılı bir testte beklenen sonuç, istenen içeriğin doğru durum koduyla dönmesi ve sayfanın tarayıcıda eksiksiz yüklenmesidir. Bağlantı kurulamıyorsa DNS, ağ erişimi veya dinleme adresi; bağlantı kurulup hata dönüyorsa HTTP server, proxy ya da uygulama yapılandırması incelenmelidir. Değişiklik yaptıktan sonra ilgili servisin yapılandırma denetimini çalıştırmadan yeniden yükleme yapmak, yazım hatalarını üretim trafiğine taşıyabilir.