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.
Giriş
YARP, yapılandırılmış hedef adres kümesini genişletmek için bir hedef çözümleyici kullanır. Hedef çözümleyici, hizmet bulma sistemleriyle bir tümleştirme noktası olarak kullanılabilir.
Yapı
IDestinationResolver, bir ResolveDestinationsAsync(IReadOnlyDictionary<string, DestinationConfig> destinations, CancellationToken cancellationToken)
örneği döndüren tek bir yöntem 'ye sahiptir.
ResolvedDestinationCollection, DestinationConfig örneklerinin yanı sıra bu bilgilerin güncel olmadığını ve yeniden yüklenmesi gerektiğini proxy'ye bildirmeye yönelik bir IChangeToken
sahiptir ve bu da ResolveDestinationsAsync
yeniden çağrılmasına neden olur.
DestinationConfig
DestinationConfig
, ara sunucunun bu hedefle iletişim kurarken kullanması gereken varsayılan Host
üst bilgi değerini belirtmek için kullanılabilecek bir Host
özelliği vardır. Bu, IDestinationResolver
'ın, örneğin SNI veya konak tabanlı yönlendirmenin başarısız olmasına neden olmadan, hedefleri bir IP adresi koleksiyonuna çözümlemesine olanak tanır.
Yaşam Döngüsü
Başlangıç
IDestinationResolver
, DI kapsayıcısında tekil olarak kaydedilmelidir. Başlangıçta, proxy bu örneği çözecek ve çözümlenen ResolveDestinationsAsync(...)
den alınan yapılandırılmış hedeflerle IProxyConfigProviders
çağıracaktır. Bu ilk çağrıda sağlayıcı aşağıdakileri seçebilir:
- Sağlayıcı herhangi bir nedenle geçerli bir ara sunucu yapılandırması oluşturamıyorsa özel durum oluşturma. Bu, uygulamanın başlatılmasını engeller.
- Hedefleri eşzamansız olarak çözümleyin. Bu, çözümlenen hedefler kullanılabilir olana kadar uygulamanın başlatılmasını durdurur.
- Alternatif olarak, arka planda hedefleri çözümlerken boş bir
ResolvedDestinationCollection
örneği döndürmeyi de seçebilir. Yapılandırma kullanılabilir olduğunda sağlayıcınınIChangeToken
tetiklemesi gerekir.
Atomiklik
Proxy'ye sağlanan hedef nesneleri ve koleksiyonları salt okunur olmalı ve GetConfig()
aracılığıyla ara sunucuya teslim edildikten sonra değiştirilmemelidir.
Yeni -den yükle
IChangeToken
ActiveChangeCallbacks
destekliyorsa, ara sunucu ilk hedef kümesini işledikten sonra bu belirteçle bir geri çağırma kaydeder. Sağlayıcı geri çağırmaları desteklemiyorsa, her 5 dakikada bir HasChanged
, IProxyConfig
değişiklik belirteçlerinin yanı sıra yoklanır.
Sağlayıcı ara sunucuya yeni bir hedef kümesi sağlamak istediğinde şu şekilde olmalıdır:
- Arka planda bu hedefleri çözümleyin.
-
ResolvedDestinationCollection
sabit olduğundan, yeni veriler için yeni örneklerin oluşturulması gerekir. - Değişmeyen hedeflere yönelik nesneler yeniden kullanılabilir veya yeni örnekler oluşturulabilir.
-
- Önceki
IChangeToken
çağrısından döndürülenResolveDestinationsAsync
'ı geçersiz kılın.
Yeni hedefler uygulandıktan sonra, ara sunucu yeni IChangeToken
ile bir geri çağırma kaydeder. Birbirini izleyen birden fazla yeniden yükleme sinyali varsa, ara sunucu bazılarını atlayabilir ve hazır olduğunda hedefleri çözümleyebilir.
DNS Hedef Çözümleyicisi
YARP, her ana bilgisayar adını DNS kullanarak bir veya daha fazla IP adresine çözümleyerek, çözümlenen her IP için bir hedef oluşturarak yapılandırılmış hedef kümesini genişleten bir IDestinationResolver uygulaması içerir.
DNS hedef çözümleyicisi, IReverseProxyBuilder.AddDnsDestinationResolver(Action<DnsDestinationResolverOptions>)
yöntemi kullanılarak ters proxy'nize eklenebilir.
Yöntem, çözümleyicinin seçeneklerini yapılandırmak amacıyla isteğe bağlı bir temsilciyi kabul eder, DnsDestinationResolverOptions.
Örnek
// Add the DNS destination resolver, restricting results to IPv4 addresses
reverseProxyBuilder.AddDnsDestinationResolver(o => o.AddressFamily = AddressFamily.InterNetwork);
Konfigürasyon
DnsDestinationResolverOptions DNS hedef çözümleyicisinin seçenekleri aşağıdaki özelliklere sahiptir:
Yenileme Süresi
Çözümlenen bir adın yenilenmesini isteme arasındaki süre. Bu varsayılan olarak 5 dakikadır.
Adres Ailesi
İsteğe bağlı olarak, çözümlenen adresleri IPv4 veya IPv6 adresleriyle kısıtlamak için System.Net.Sockets.AddressFamily
değerini sırasıyla AddressFamily.InterNetwork
veya AddressFamily.InterNetworkV6
olarak belirtin.
null
varsayılan değeri çözümleyiciye sonuçların adres ailesini kısıtlamamasını ve döndürülen tüm adresleri kabul etme özelliğini kullanmasını sağlar.
ASP.NET Core