407, 403, 502 HTTP durum kodları ve diğer proxy hataları, bir istemcinin ya da proxy sunucusunun bir HTTP isteğini işlerken karşılaştığı belirli sorunları gösterir; bunlar çoğunlukla kimlik doğrulama, erişim kısıtlamaları veya upstream bağlantı hatalarıyla ilgilidir.
Proxy sunucusu, başka sunuculardaki kaynaklara erişmek isteyen istemci istekleri için aracı görevi görür. Bir istemci proxy üzerinden istek gönderdiğinde, proxy bu isteği işler, gerektiğinde değiştirir ve ardından kaynak sunucuya iletir. Daha sonra kaynak sunucudan gelen yanıtı alır ve istemciye geri iletir. Bu etkileşimin çeşitli aşamalarında hatalar oluşabilir; bu hatalar ya proxy'nin kendisi tarafından üretilir ya da upstream sunucudan aktarılır. Ağ ve uygulama bağlantı sorunlarını teşhis etmek için bu kodları anlamak kritik önemdedir.
407 Proxy Authentication Required
407 Proxy Authentication Required durum kodu, istemcinin isteğe devam edebilmesi için önce proxy sunucusunda kimlik doğrulaması yapması gerektiğini belirtir. Bu hata kaynak sunucu tarafından değil, proxy sunucusu tarafından üretilir.
Mekanizma
İstemci, kimlik doğrulaması gerektiren bir proxy sunucusuna istek gönderdiğinde ve istek geçerli proxy kimlik bilgilerini içermiyorsa (ya da hiç kimlik bilgisi içermiyorsa), proxy sunucusu 407 durum koduyla yanıt verir. Bu yanıt, proxy'nin desteklediği kimlik doğrulama şemalarını (örneğin Basic, Digest, NTLM) belirten bir Proxy-Authenticate başlığı içerir.
İstemcinin yapması gereken
407 yanıtını alan uyumlu bir istemci, kullanıcıdan kimlik bilgilerini istemeli ya da bunları kendi yapılandırmasından almalı, ardından özgün isteği uygun kimlik bilgilerini içeren bir Proxy-Authorization başlığıyla yeniden göndermelidir.
Örnek
Bir istemci, proxy.example.com:8080 adresindeki proxy üzerinden http://example.com adresine erişmeye çalışır.
İstemci isteği (ilk):
GET http://example.com/index.html HTTP/1.1
Host: example.com
Proxy yanıtı:
HTTP/1.1 407 Proxy Authentication Required
Proxy-Authenticate: Basic realm="Proxy Realm"
Content-Length: 0
İstemci isteği (kimlik doğrulamasından sonra):
GET http://example.com/index.html HTTP/1.1
Host: example.com
Proxy-Authorization: Basic YWRtaW46cGFzc3dvcmQ=
Sorun giderme
- İstemci yapılandırmasını doğrulayın: İstemcinin (tarayıcı, uygulama,
curl) doğru proxy'yi kullanacak şekilde yapılandırıldığından ve gerekli kimlik bilgilerine sahip olduğundan emin olun. - Proxy yapılandırmasını kontrol edin: Proxy sunucusunun kimlik doğrulama ayarlarının beklendiği gibi olduğunu doğrulayın.
- Kimlik bilgilerinin geçerliliği: Girilen kullanıcı adı ve parolanın proxy için doğru olduğundan emin olun.
- Güvenlik duvarı/ağ kuralları: 407 için daha az rastlanan bir durum olsa da, hiçbir ağ kuralının kimlik doğrulama el sıkışmasına karışmadığından emin olun.
403 Forbidden
403 Forbidden durum kodu, sunucunun isteği anladığını ancak yetkilendirmeyi reddettiğini gösterir. 401 Unauthorized veya 407 Proxy Authentication Required kodlarının aksine, kimlik doğrulama sonucu değiştirmez; istemcinin kaynağa erişim izni yoktur.
Proxy'nin rolü
403 hatası hem kaynak sunucu hem de proxy sunucusunun kendisi tarafından üretilebilir.
- Kaynak sunucu tarafından üretilen: Proxy isteği kaynak sunucuya iletir; kaynak sunucu, istemcinin (ya da istemci adına proxy'nin) istenen kaynağa erişmek için gerekli izinlere sahip olmaması nedeniyle
403ile yanıt verir. Proxy bu kodu istemciye olduğu gibi geri iletir. - Proxy tarafından üretilen: Proxy sunucusunun dahili erişim kontrol listeleri (ACL), politikaları veya içerik filtreleme kuralları istemcinin belirli bir hedefe, URL'ye ya da içerik türüne erişmesini açıkça yasaklıyorsa proxy
403yanıtı üretebilir. Bu senaryoda istek kaynak sunucuya hiç ulaşmaz.
407'den farkı
407 hatası, isteğin devam edebilmesi için proxy'nin kimlik doğrulaması istediği anlamına gelir. 403 hatası ise, kimlik doğrulamadan bağımsız olarak (hatta kimlik doğrulama başarılı olsa bile) kaynağın (proxy üzerinde ya da kaynak sunucuda) yasaklı olduğu anlamına gelir.
Sorun giderme
- Proxy loglarını kontrol edin:
403kodunun proxy tarafından mı üretildiğini yoksa kaynak sunucudan mı aktarıldığını belirleyin. Proxy logları isteğin dahili olarak engellenip engellenmediğini genellikle gösterir. - Proxy politikalarını/ACL'lerini gözden geçirin:
403proxy tarafından üretildiyse, yapılandırmasında isteği engelleyebilecek URL filtreleme, alan adı kısıtlamaları, IP tabanlı erişim kontrolleri veya kullanıcı grubu politikalarını inceleyin. - Kaynak sunucu izinlerini doğrulayın:
403kaynak sunucudan geldiyse, hedef sunucunun dosya izinlerini, web sunucusu yapılandırmasını (örneğin Apache.htaccess, Nginxdenydirektifleri) veya uygulama düzeyindeki erişim kontrollerini inceleyin. - İstemci IP'si/User Agent: Bazı kaynak sunucular veya proxy politikaları istekleri istemcinin IP adresine ya da user-agent dizesine göre engeller.
502 Bad Gateway
502 Bad Gateway durum kodu, ağ geçidi ya da proxy olarak çalışan proxy sunucusunun, isteği yerine getirmeye çalışırken eriştiği bir upstream sunucudan geçersiz bir yanıt aldığını gösterir.
Mekanizma
İstemci proxy'ye bir istek gönderdiğinde, proxy bunu bir kaynak sunucuya (ya da başka bir proxy'ye) iletir. Kaynak sunucu, proxy'nin geçerli bir HTTP yanıtı olarak yorumlayamayacağı bir HTTP durum kodu veya veri döndürürse ya da istek gönderildikten sonra kaynak sunucuyla bağlantı koparsa, proxy bir 502 hatası üretip istemciye gönderir.
Yaygın nedenler
- Upstream sunucu kapalı: Kaynak sunucu çevrimdışı ya da erişilemez durumdadır.
- Ağ bağlantı sorunları: Proxy ile kaynak sunucu arasındaki sorunlar (örneğin güvenlik duvarı engeli, yönlendirme sorunları, DNS çözümleme hatası).
- Kaynak sunucunun aşırı yüklenmesi: Kaynak sunucu yanıt veremeyecek kadar meşguldür ya da bozuk bir mesajla yanıt verir.
- Geçersiz HTTP yanıtı: Kaynak sunucu, HTTP protokol belirtimine uymayan bir yanıt gönderir (örneğin eksik başlıklar, bozuk veri).
- Proxy yapılandırma hataları: 502 için daha az rastlansa da, upstream sunuculara ilişkin hatalı proxy ayarları bu duruma katkıda bulunabilir.
Sorun giderme
- Upstream sunucu durumunu kontrol edin: Kaynak sunucunun çalıştığını ve doğrudan proxy sunucusundan erişilebilir olduğunu doğrulayın.
- Ağ yolunu doğrulayın: Bağlantıyı doğrulamak için proxy sunucusundan kaynak sunucunun HTTP portuna
ping,tracerouteveyatelnetgibi araçlar kullanın. - Proxy logları: Upstream iletişim hatasına dair ayrıntılar için proxy sunucusunun hata loglarını inceleyin. Bu loglar genellikle kaynak sunucuya yapılan bağlantı denemesine ilişkin daha spesifik hata mesajları içerir.
- Kaynak sunucu logları: Kaynak sunucu ayaktaysa, neden geçersiz bir yanıt göndermiş ya da yanıt verememiş olabileceğine dair ipuçları için erişim ve hata loglarını kontrol edin.
- DNS çözümlemesi: Proxy'nin kaynak sunucunun hostname'ini doğru şekilde çözümleyebildiğinden emin olun.
Diğer yaygın proxy hataları ve ilgili kodlar
400 Bad Request
Proxy sunucusunun, bozuk sözdizimi nedeniyle isteği anlayamadığını gösterir. Bu hata genellikle istemcinin HTTP isteği protokol standartlarına uymadığında (örneğin hatalı başlıklar, geçersiz URL kodlaması) proxy'nin kendisi tarafından üretilir.
408 Request Timeout
İstemci, proxy sunucusunun beklemeye hazır olduğu süre içinde bir istek üretmemiştir. Bu kod, proxy yapılandırılmış zaman aşımı süresi içinde istemciden tam bir istek alamadığında da üretilebilir.
500 Internal Server Error
Sunucunun karşılaştığı beklenmedik bir durumu belirten genel bir hata mesajıdır. Bu kodu bir proxy üretiyorsa, proxy'nin kendisinin isteği yerine getirmesini engelleyen dahili bir hatayla karşılaştığı anlamına gelir. Bu, upstream sunuculardan kaynaklanan hatalardan farklıdır.
503 Service Unavailable
Proxy sunucusu, geçici aşırı yük ya da planlı bakım nedeniyle isteği şu anda işleyemez; bu durum büyük olasılıkla bir süre sonra ortadan kalkacaktır. Bu hata proxy'nin kendisi tarafından üretilir ve kendi kullanılamaz durumda olduğunu gösterir.
504 Gateway Timeout
Ağ geçidi ya da proxy olarak çalışan proxy sunucusu, isteği tamamlamak için erişmesi gereken upstream sunucudan zamanında yanıt alamamıştır. Bunun 502 kodundan farkı şudur: 504 bir zaman aşımı anlamına gelir (belirlenen süre içinde yanıt yok), 502 ise geçersiz veya bozuk bir yanıt alındığını ifade eder.
5xx hatalarının karşılaştırması
502 ile 504 arasındaki ince farkları anlamak, etkili sorun giderme için kritik önemdedir.
| Kod | Açıklama | Başlıca neden | Üreten taraf | Çözüm odağı |
|---|---|---|---|---|
| 502 | Bad Gateway | Proxy upstream'den geçersiz yanıt aldı | Proxy sunucusu | Upstream sunucu sağlığı, geçerli HTTP yanıtları, ağ |
| 504 | Gateway Timeout | Proxy upstream'den zamanında yanıt alamadı | Proxy sunucusu | Upstream sunucu performansı, ağ gecikmesi, proxy zaman aşımları |
| 500 | Internal Server Error | Sunucuda beklenmedik durum | Proxy sunucusu (hatayı proxy'nin kendisi ürettiyse) | Proxy sunucusunun dahili süreçleri, yapılandırma |
| 503 | Service Unavailable | Sunucu isteği işleyemiyor (aşırı yük/bakım) | Proxy sunucusu (proxy'nin kendisi kullanılamıyorsa) | Proxy sunucusu kapasitesi, kaynak kullanılabilirliği |
Proxy hatalarını yönetmede en iyi uygulamalar
- Kapsamlı loglama: Proxy sunucularını, tüm HTTP başlıkları ve kesin zaman damgaları dahil olmak üzere tüm istek ve yanıt ayrıntılarını loglayacak şekilde yapılandırın. Bu veriler hataların kaynağını ve niteliğini teşhis etmek için paha biçilmezdir.
- Gerçek zamanlı izleme ve uyarı: Proxy sunucusunun sağlığı, kaynak kullanımı ve belirli HTTP hata kodları için izleme kurun. 4xx ve 5xx hatalarının artışı için uyarılar tanımlayın.
- Ayrıntılı hata sayfaları: Proxy tarafından üretilen kodlar için (örneğin 407, proxy kaynaklı 403, 5xx) hata sayfalarını özelleştirerek istemcilere sorun giderme adımları ya da iletişim bilgileri dahil daha açıklayıcı mesajlar sunun.
- Upstream sağlık kontrolleri: Birden fazla kaynak sunucuya yönlendirme yapan proxy'lerde, sorunlu upstream servisleri hızlıca tespit edip devre dışı bırakmak için aktif sağlık kontrolleri uygulayın.
- İstemcileri bilgilendirme: İstemcilere, uygulamalarını ya da tarayıcılarını proxy'yi doğru şekilde kullanacak biçimde nasıl yapılandıracaklarını, kimlik doğrulama ayrıntıları dahil olmak üzere açık bir dokümantasyonla anlatın.
- Politikaların düzenli denetimi: Proxy erişim kontrol listelerini ve filtreleme politikalarını düzenli olarak gözden geçirerek güncel gereksinimlerle uyumlu olduklarından ve meşru trafiği yanlışlıkla engellemediklerinden emin olun.
