407 зад корпоративниот VPN прокси: npm, Maven и VS Code
407 значи дека проксито бара акредитиви, а не дека регистарот паднал. Поставете npm, Maven, VS Code и контејнерите и исклучете ги внатрешните домаќини.
Успешната внатрешна страница во прелистувачот докажува само дека проксито работи за прелистувачот, не за npm или Maven. Секој клиент ја чита сопствената конфигурација, а мрежа достапна само преку VPN додава второ прашање: дали клиентот воопшто стигнува до проксито. Започнете со кодот на состојба и следете го синџирот поставки на алатката што не успеа. Затоа еден клиент работи, а соседниот не.
Што всушност докажува 407
407 Proxy Authentication Required доаѓа од проксито, не од регистарот или складиштето. Клиентот стигна до проксито и тоа го одби барањето, обично затоа што акредитивите недостасуваа, беа погрешно форматирани или не беа прифатени за таа дестинација.
Истекот на време раскажува друга приказна: погрешна адреса на проксито, нема рута до него пред да се крене тунелот или недостасува запис за заобиколување за внатрешен домаќин. Прочитајте го текстот на грешката пред да ги смените акредитивите.
Проверете домаќин, порта, шема на автентикација и дали корисничкото име бара префикс на домен. Потоа проверете дали алатката ја чита вредноста од датотека, променлива на околината или од двете. Име со домен е честа причина за 407, како и лозинка зачувана со погрешно кодирање.
npm го чита сопствениот синџир поставки
npm ги прифаќа клучевите proxy и https-proxy во .npmrc на корисник или проект. Наведете ја шемата, бидејќи вредностите се URL, и кодирајте ги резервираните знаци во лозинката за знакот at да не ја подели вредноста.
proxy=http://proxy.example.com:8080
https-proxy=http://proxy.example.com:8080
strict-ssl=true
Со npm config list гледате која датотека дала која ефективна вредност. Извоз на shell како npm_config_proxy може да ја надмине датотеката, а проектниот .npmrc со лична лозинка никогаш не треба да се комитува. Испечатете ја патеката на изворот заедно со вредноста.
Оставете го strict-ssl вклучено. Прокси што го проверува TLS може да бара корпоративниот CA во доверливото складиште; исклучувањето на проверката за да се заобиколи грешката го крие вистинскиот проблем со довербата.
Maven ги одвојува проксијата од огледалата
Maven ги чита проксијата и огледалата од корисничката датотека со поставки, не од pom на проектот. Мрежните проксија и огледалата на внатрешното складиште ставете ги во ~/.m2/settings.xml, а јавните декларации оставете ги во проектот.
Блокот за прокси бара id, знаменце за активност, протокол, домаќин и порта, како и запис nonProxyHosts за внатрешното складиште. Држете ги овие полиња во корисничката датотека, не во pom, за промена на мрежата да не го препишува build-от на целиот тим.
Додајте го внатрешното складиште во nonProxyHosts за Maven да се поврзе директно. Без тој запис проксито станува непотребно застанување и дефектот изгледа како прекин на складиштето. Записот за огледало покажува на внатрешното складиште и не ја заменува поставката за прокси.
Развивачите што се движат меѓу мрежи можат да држат по една датотека со поставки за секоја мрежа и да ја изберат вистинската копија при стартување на shell. Рачното уредување на една датотека при секое преминување го претвора работниот лаптоп во билет за поддршка.
VS Code и dev контејнерите имаат различни именски простори
VS Code го чита http.proxy од корисничките или работните поставки, вклучително шемата и портата. Тоа ги покрива барањата на уредувачот до екстензиите и пазарот, но не конфигурира терминал ниту контејнер стартуван од уредувачот. Проверете го опсегот на поставката и вредноста. Работната поставка може да ја надмине корисничката за еден проект.
Dev контејнерот има свој мрежен именски простор. Не ги наследува променливите за прокси на домаќинот ниту неговата VPN рута, затоа повикот до пазарот во контејнерот може да не успее, додека истиот повик на домаќинот работи.
Дајте му ги тие променливи на контејнерот, или дајте му свој resolver и рута. Кога имињата се решаваат внатре, но проксито никогаш не одговара, делот што недостасува обично е рутата, не адресата.
Списоци за заобиколување и приоритет на околината
Додајте ја VPN портата, внатрешните регистри и приватните DNS наставки во списокот за заобиколување. Ако клиентот се обиде да ја достигне портата преку проксито пред да постои тунелот, врската паѓа така што изгледа како испад на проксито. Тестирајте го тоа со спуштен тунел.
Променливите на околината и датотеките може да се разидуваат. Пуштете сопствен дамп на поставките на алатката, не на shell, и споредете ги вредностите. Дублирана променлива со мали букви, стара вредност во родителски shell или проектна датотека можат да ја надминат штотуку сменетата поставка.
Во CI предадете го проксито како тајна променлива и тестирајте инсталација на еден пакет во истиот image. 407 во контејнер често значи дека променливата таму едноставно недостасува, додека shell-от на домаќинот ја има.
Запишете домаќин, порта, наставки за заобиколување и датотеката или променливата што ги дава за секоја алатка. Кога еден клиент враќа 407, а друг работи, тој запис споредбата на четири различни конфигурации ја претвора во кратка проверка.