Kompatibilita NO_PROXY v curl, .NET a kontejnerech
Převeďte sdílenou politiku přímého směrování na konfiguraci specifickou pro klienta pomocí malé sady reprezentativních cílů.
Tým vloží jeden obchozí řetězec do sdíleného souboru prostředí. curl jde přímo, jiná aplikace použije proxy a kontejner se chová zase jinak. Sdílený soubor distribuoval stejné znaky. Nedistribuoval však jeden sdílený parser.
Trvalým objektem je politika: které cíle mají být přímé a za jakých podmínek? Udržujte ji odděleně od řetězce, který každý program potřebuje.
Nejprve zapište očekávané trasy
Použijte reprezentativní adresy, včetně hranic, ne jen snadných úspěchů:
| Tvar cíle | Otázka pro vlastníka politiky |
|---|---|
| Nadřazená doména | Má se obejít, nebo jen její potomci? |
| Subdoména | Dědí stejnou trasu? |
| Literální privátní IP | Je tato adresa přímo dostupná z tohoto klienta? |
| Stejná služba pod názvem hostitele | Mají se požadavky podle názvu a podle adresy shodovat? |
| Jiný port služby | Pokrývá výjimka hostitele, nebo jednoho posluchače? |
Potom identifikujte spotřebitele: démon stahující image, program uvnitř kontejneru, HTTP knihovna jazyka a interaktivní prohlížeč mohou být samostatné položky. Proxy konfigurace klienta Docker může naplnit hodnoty prostředí kontejneru, aniž by každý klient uvnitř musel implementovat stejná pravidla shody.
Překládejte, místo abyste slepě kopírovali
Jedním zdokumentovaným příkladem skutečného rozdílu je hranice nadřazené domény. Vyloučení domény v curl pokrývá uvedenou doménu a odpovídající potomky. Politika prostředí .NET rozlišuje holé jméno od formy subdomény s úvodní tečkou. Univerzální pravidlo vždy přidat úvodní tečku nemůže obě politiky spolehlivě vyjádřit.
Podpora rozsahů IP také závisí na spotřebiteli a jeho verzi. Stroj s novým samostatným curl může stále spouštět aplikaci propojenou se starším libcurl, nebo klienta používajícího zcela jinou knihovnu. Vydání operačního systému není úplný soupis klientů.
Pro každého spotřebitele zaznamenejte podporované konfigurační rozhraní a nejmenší vyjádření zamýšlených tras. Krátký explicitní seznam hostitelů může být lepší než chytrý vzor, jehož význam nikdo nedokáže vysvětlit.
Uchovávejte důkazy o konfiguraci odděleně od důkazů o spojení
Parsované nastavení nebo API rozhodování o směrování může ukázat, co program zvolil. Výsledek požadavku pak ukáže, zda byla tato trasa použitelná. V .NET, HttpClient.DefaultProxy.IsBypassed poskytuje tuto kontrolu na straně konfigurace, když je používanou politikou výchozí proxy. Nediagnostikujte nedostupnou přímou službu jako selhání parseru obejití jen proto, že požadavek vypršel.
Při aktualizaci klienta nebo základního image zachovejte hraniční cíle. Zviditelňují budoucí změny kompatibility, aniž by celý tým musel znovu objevovat, proč soubor obsahuje dva podobné záznamy domény.