At intranettsiden virker i browseren beviser kun, at proxyen virker for browseren, ikke for npm eller Maven. Hver klient læser sin egen konfiguration, og et netværk, der kun nås via VPN, rejser et andet spørgsmål: om klienten overhovedet når proxyen. Start med statuskoden, og følg derefter konfigurationskæden for det værktøj, der fejlede. Derfor virker én klient, mens naboen fejler.

Hvad en 407 faktisk beviser

En 407 Proxy Authentication Required kommer fra proxyen, ikke fra registret eller repositoriet. Klienten nåede proxyen, og proxyen afviste anmodningen, oftest fordi legitimationsoplysninger manglede, var forkert formateret eller ikke accepteret til det mål.

En timeout fortæller noget andet: forkert proxyadresse, ingen rute til proxyen før tunnelen er oppe, eller en bypass-post der mangler for en intern vært. Læs fejlteksten, før du ændrer legitimationsoplysninger.

Bekræft proxyvært, port, godkendelsesmetode og om brugernavnet kræver domænepræfiks. Undersøg derefter, om værktøjet læser værdien fra en fil, en miljøvariabel eller begge. Et domænekvalificeret brugernavn er en hyppig årsag til 407, og det samme er en adgangskode gemt med forkert kodning.

npm læser sin egen konfigurationskæde

npm accepterer nøglerne proxy og https-proxy i en .npmrc for brugeren eller projektet. Angiv skemaet, fordi værdierne er URL’er, og URL-kod reserverede tegn i adgangskoden, så et at-tegn ikke deler værdien.

proxy=http://proxy.example.com:8080
https-proxy=http://proxy.example.com:8080
strict-ssl=true

Med npm config list ser du, hvilken fil der gav hver effektiv værdi. Et shell-export som npm_config_proxy kan tilsidesætte filen, og en projekt-.npmrc med en personlig adgangskode bør aldrig committes. Udskriv kildebanen sammen med værdien.

Lad strict-ssl være slået til. En proxy, der inspicerer TLS, kan kræve virksomhedens CA i tillidslageret; at slå verifikationen fra for at komme forbi fejlen skjuler det egentlige tillidsproblem.

Maven adskiller proxyer fra spejle

Maven læser proxyer og spejle fra brugerens indstillingsfil, ikke fra projektets pom. Læg netværksspecifikke proxyer og spejle til det interne repository i ~/.m2/settings.xml, og lad offentlige repository-erklæringer blive i projektet.

Proxyblokken kræver et id, et aktiv-flag, protokollen, vært og port samt en nonProxyHosts-post til det interne repository. Hold felterne i brugerens indstillingsfil, ikke i projektets pom, så en netværksændring ikke omskriver hele teamets build. Spejlposten er separat og peger Maven mod det interne repository.

Tilføj det interne repository til nonProxyHosts, så Maven forbinder direkte. Uden posten bliver proxyen et unødvendigt stop, og fejlen ligner et repository-nedbrud. En spejlpost peger på det interne repository og erstatter ikke proxyindstillingen.

Udviklere, der skifter netværk, kan holde én indstillingsfil pr. netværk og vælge den rigtige kopi, når shellen starter. Manuelt at redigere én fil ved hvert skift gør en fungerende laptop til en support-sag.

VS Code og dev-containere har forskellige navnerum

VS Code læser http.proxy fra bruger- eller arbejdsrumsindstillinger, inklusive skema og port. Det dækker editorens egne udvidelses- og marketplace-kald, men konfigurerer ikke en terminal eller en container startet fra editoren. Kontroller indstillingens omfang og værdien. En arbejdsrumsindstilling kan tilsidesætte brugerindstillingen for ét projekt.

En dev-container har sit eget netværksnavnerum. Den arver ikke værtens proxyvariabler eller VPN-rute, og derfor kan et marketplace-kald i containeren fejle, mens det samme kald virker på værten.

Giv containeren de variabler, eller giv den sin egen resolver og rute. Når navne opløses indeni, men proxyen aldrig svarer, mangler der normalt ruten, ikke adressen.

Bypass-lister og miljøets forrang

Tilføj VPN-gatewayen, interne registre og private DNS-suffikser til bypass-listen. Hvis klienten forsøger at nå VPN-gatewayen gennem proxyen, før tunnelen findes, fejler forbindelsen, så det ligner et proxy-nedbrud. Test bypasset med tunnelen nede.

Miljøvariabler og filer kan være uenige. Kør værktøjets eget konfigurationsdump, ikke shellens, og sammenlign værdierne. En dubletvariabel med små bogstaver, en forældet værdi i en overordnet shell eller en projektfil kan vinde over den indstilling, du netop har rettet.

I CI sendes proxyen som en hemmelig variabel, og én pakkeinstallation testes i det samme image. En 407 i en container betyder ofte, at variablen ganske enkelt mangler der, mens værtens shell har den.

Notér proxyvært, port, bypass-suffikser og den fil eller variabel, der leverer dem, for hvert værktøj. Når én klient returnerer 407 og en anden virker, gør notatet sammenligningen af fire konfigurationer til et kort tjek.

Relaterede artikler