Съвместимост на NO_PROXY при curl, .NET и контейнери
Превърнете споделена политика за директно маршрутизиране в конфигурация за конкретния клиент, като използвате малък набор от представителни дестинации.
Екип поставя един низ за заобикаляне в споделен файл за среда. curl минава директно, друго приложение използва прокси, а контейнерът се държи отново различно. Споделеният файл разпространи същите знаци. Но не разпространи един споделен анализатор.
Трайният обект е политиката: кои дестинации трябва да са директни и при какви условия? Дръжте я отделно от низа, който всяка програма изисква.
Първо запишете очакваните маршрути
Използвайте представителни адреси, включително граници, а не само лесни успехи:
| Форма на дестинацията | Въпрос към собственика на политиката |
|---|---|
| Родителски домейн | Трябва ли да се заобикаля, или само неговите деца? |
| Поддомейн | Наследява ли същия маршрут? |
| Литерален частен IP | Достъпен ли е този адрес директно от този клиент? |
| Същата услуга под име на хост | Трябва ли заявките по име и по адрес да съвпадат? |
| Друг порт на услуга | Изключението покрива ли хоста или един слушател? |
След това идентифицирайте потребителите: демонът, който изтегля образ, програмата вътре в контейнера, HTTP библиотека за език и интерактивен браузър могат да бъдат отделни записи. Прокси конфигурацията на Docker клиент може да попълни стойностите на средата на контейнера, без всеки клиент вътре да трябва да прилага същите правила за съвпадение.
Преведете, вместо да копирате сляпо
Един документиран пример за реална разлика е границата на родителския домейн. Изключването на домейн в curl покрива посочения домейн и съответстващите деца. Политиката за среда на .NET различава голото име от формата на поддомейн с водеща точка. Универсално правило винаги да се добавя водеща точка не може надеждно да изрази и двете политики.
Поддръжката на IP диапазони също зависи от потребителя и неговата версия. Машина с нов самостоятелен curl все още може да изпълнява приложение, свързано със стар libcurl, или клиент, който използва напълно друга библиотека. Версията на операционната система не е пълен опис на клиентите.
За всеки потребител запишете поддържания интерфейс за конфигурация и най-малкия израз на предвидените маршрути. Кратък явен списък с хостове може да е по-добър от хитър шаблон, чието значение никой не може да обясни.
Дръжте доказателствата за конфигурацията отделно от доказателствата за връзката
Анализирана настройка или API за решения за маршрутизиране може да покаже какво е избрала програмата. Резултатът от заявката след това показва дали този маршрут е бил използваем. В .NET, HttpClient.DefaultProxy.IsBypassed предоставя тази проверка от страна на конфигурацията, когато проксито по подразбиране е използваната политика. Не диагностицирайте недостъпна директна услуга като повреда на анализатора за заобикаляне само защото заявката е изтекла.
Запазете граничните дестинации при актуализиране на клиент или базов образ. Те правят бъдещите промени в съвместимостта видими, без целият екип да трябва отново да открива защо файлът съдържа два подобни записа за домейн.