Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Ara sunucu, bir istemci (uygulamanız gibi) ile hedef sunucu (arka uç API'si gibi) arasında duran bir aracı sunucudur. Uygulamanız bir istek gönderdiğinde, proxy bunu ilk olarak alır. Proxy daha sonra isteği hedef sunucuya iletebilir, değiştirebilir, engelleyebilir veya doğrudan bir yanıt döndürebilir.
Kısacası, bir ara sunucu iletişim aracılık etmek için istemci veya sunucu adına hareket eder.
Ara sunucu nasıl çalışır?
Proxy'ler, gelen istekleri alıp aşağıdaki eylemlerden birini veya daha fazlasını gerçekleştirerek HTTP düzeyinde (veya diğer uygulama protokollerinde) çalışır:
- İsteği hedef sunucuya iletme ve ardından yanıtı istemciye geri geçirme.
- İletmeden önce üst bilgilerini, URL'leri veya yükleri değiştirme.
- Hedef sunucuyla iletişim kurmadan isteği yakalama ve yerel olarak yanıtlama.
- Kurallara veya erişim ilkelerine göre isteği reddetme.
İstemcinin perspektifinden bakıldığında, bir URL'ye istek göndermek yeterlidir. Proxy, arka planda kalan her şeyi işler. Desen, hedef sunucuya ara sunucuya istemcidir.
Bu desen, güvenliği, gözlemlenebilirliği, performansı ve test edilebilirliği geliştirmek için kullanabileceğiniz bir denetim ve soyutlama katmanını tanıtır.
Ara sunucu türleri
Farklı proxy türleri vardır. Her biri sistem mimarisindeki belirli rollere uygundur.
İletme ara sunucusu
istemciönünde bir ileriye doğru ara sunucu bulunur. Uygulamanız bir istekte bulunduğunda, bu istek ara sunucu üzerinden geçer ve bu ara sunucu isteğin iletilip iletilmeyeceğine ve nasıl iletileceğine karar verir. İleri proxy'ler yaygın olarak şunlar için kullanılır:
- Dış kaynaklara erişimi denetleme.
- İstemci trafiğini anonimleştirin.
- İzleme için giden trafiği günlüğe kaydetme.
- İçerik filtreleme veya dönüştürme uygula.
Ters ara sunucu
Ters proxy sunucusunun önündesunucu yer alır. İstemciler, temel alınan arka uç altyapısının farkında değil. Ters ara sunucu gelen istekleri alır ve bunları birkaç arka uç sunucusuna iletir. Ters proxy'ler yaygın olarak şunlar için kullanılır:
- Birden çok hizmet arasında trafiği dengele.
- Arka uç yükünü azaltmak için önbelleğe alınmış yanıtlar sunma.
- TLS/SSL bağlantılarını sonlandır.
- İç hizmet ayrıntılarını genel İnternet'ten gizleyin.
Saydam proxy
Saydam bir ara sunucu, istemci açıkça kullanmak üzere yapılandırılmadan trafiği durdurur. Bu tür, ilkeleri zorunlu kılmak veya kullanımı izlemek için kurumsal veya İnternet hizmet sağlayıcısı ortamlarında kullanılır.
Proxy'ler uygulama geliştiricileri için neden önemlidir?
Genellikle altyapı veya ağ ekipleri proxy'leri yönetir. Ancak proxy'ler özellikle geliştirme ve test ortamlarında uygulama davranışını doğrudan etkiler. Günlük çalışmanızı etkilemenin bazı pratik yolları aşağıdadır.
Hata ayıklama ve gözlemlenebilirlik
Proxy'ler HTTP trafiğini yakalayabilir ve inceleyebilir. Dev Proxy, Fiddler, Proxyman, Charles Proxy veya mitmproxy gibi araçlar yerel ileriye doğru proxy'ler görevi görür. İstekleri ve yanıtları analiz etmek, hataları tespit etmek ve üst bilgileri veya kimlik doğrulama belirteçlerini doğrulamak için uygulamanızı bunlar aracılığıyla çalıştırabilirsiniz.
API ağ geçidi ve yönlendirme
Birçok üretim sisteminde uygulamanızın arka ucuna giden trafik, NGINX gibi bir API ağ geçidi veya ters ara sunucu ya da Azure API Management gibi buluta özel bir hizmet üzerinden yönlendirilir. Bu proxy'ler yönlendirmeyi, kimlik doğrulamayı, hız sınırlamayı ve daha fazlasını işler.
API'nizi tasarlarken veya dağıtılmış hizmetler oluştururken proxy'lerin üst bilgileri (örneğin X-Forwarded-For
), zaman aşımlarını ve istek boyutu sınırlarını nasıl etkilediğini anlamanız gerekir.
CORS ve yerel geliştirme
Yerel geliştirme sırasında, özellikle web uygulamalarında, tarayıcıdan API'leri çağırdığınızda çıkış noktaları arası kaynak paylaşımı (CORS) kısıtlamalarıyla karşılaşabilirsiniz. Geliştirme ara sunucusu, CORS sınırlamalarını atlamak için üst bilgileri yeniden yazarken isteklerinizi hedef API'ye iletebilir. CORS isteklerini yeniden yazan geliştirici araçlarının yaygın örnekleri Express veya ASP.NET Core gibi çerçevelerde vite
, webpack-dev-server
veya özel ara sunucu ara yazılımıdır.
Hizmet sanallaştırma ve test etme
Proxy'ler arka uç API'lerinin simülasyonunu yapabilir. Bu özellik, gerçek hizmetin kullanılamadığı, kararsız olduğu veya test sırasında kullanılması pahalı olduğu durumlarda kullanışlıdır. Yanıtları engelleyip taklit ederek, zaman aşımları, hatalar veya hatalı biçimlendirilmiş veriler gibi farklı senaryolarda uygulama davranışını test edebilirsiniz.
Geliştirme Proxy'si veya özel ara sunucu uygulamaları gibi araçlar, tümleştirme ve uçtan uca testlerde bu amaçla yaygın olarak kullanılır.
Kimlik doğrulaması ve güvenlik
Proxy'ler genellikle uygulamaların güvenliğini sağlamada ön savunma hattıdır. Erişim denetimlerini zorunlu kılabilir, kimlik doğrulaması üst bilgileri ekleyebilir veya TLS/SSL bağlantılarını sonlandırabilir. Geliştirici olarak, uygulamanızın bir ara sunucu arkasında dururken nasıl davrandığını ve kimlik doğrulaması veya kimlik bilgilerini taşıyan üst bilgilere nasıl erişildiğini bilmeniz önemlidir.
Yaygın başlıklar ve ara sunucu ile ilgili dikkat edilmesi gerekenler
bir istek bir ara sunucudan geçtiğinde, önemli meta verileri korumak için belirli üst bilgiler eklenir veya değiştirilir. Mesela:
-
X-Forwarded-For
: İstemcinin özgün IP adresini gösterir. -
X-Forwarded-Proto
: Özgün protokolü (HTTP veya HTTPS) gösterir. -
X-Forwarded-Host
: İstemci tarafından istenen orijinal konağı gösterir.
Uygulamanız ters ara sunucu arkasında çalıştığında, çerçevenizin veya platformunuzun bu üst bilgilere güvenecek ve bunları doğru yorumlayabilecek şekilde yapılandırıldığından emin olun.
Geliştirme ve test için önyüz proxy olarak Dev Proxy
Geliştirme Proxy'si, uygulamanızdan herhangi bir hedef sunucuya gelen istekleri kesmek ve değiştirmek için kullanabileceğiniz bir iletme ara sunucusudur. Geliştirme Proxy'si ile şunları yapabilirsiniz:
- Uygulamanızın API hatalarına nasıl yanıt verdiğini görün.
- Uygulamanızın API hız sınırlarını nasıl işlediğini doğrulayın.
- Uygulamanızın yavaş API'leri nasıl işlediğini görün.
- Kod satırı yazmadan sahte API'leri hızla ayağa kaldırma.
- API'leri nasıl kullandığınıza ilişkin bağlamsal rehberlikle uygulamanızı geliştirin.