Dat de intranetpagina in de browser opent, bewijst alleen dat de proxy voor de browser werkt, niet voor npm of Maven. Elke client leest zijn eigen configuratie, en een netwerk dat alleen via VPN bereikbaar is, voegt een tweede vraag toe: of de client de proxy überhaupt bereikt. Begin bij de statuscode en volg daarna de configuratieketen van het hulpmiddel dat faalde. Daarom werkt de ene client wel en de andere niet.

Wat een 407 echt bewijst

Een 407 Proxy Authentication Required komt van de proxy, niet van het register of de repository. De client bereikte de proxy en de proxy weigerde het verzoek, meestal omdat inloggegevens ontbraken, verkeerd waren opgemaakt of niet werden geaccepteerd voor die bestemming.

Een time-out vertelt iets anders: een verkeerd proxyadres, geen route naar de proxy voordat de tunnel staat, of een bypass-regel die voor een interne host ontbreekt. Lees de fouttekst voordat u inloggegevens wijzigt.

Controleer host, poort, authenticatieschema en of de gebruikersnaam een domeinprefix nodig heeft. Kijk daarna of het hulpmiddel de waarde uit een bestand, een omgevingsvariabele of beide leest. Een naam met domein is een veelvoorkomende oorzaak van 407, net als een wachtwoord dat met de verkeerde codering is opgeslagen.

npm leest zijn eigen configuratieketen

npm accepteert de sleutels proxy en https-proxy in een .npmrc van de gebruiker of het project. Geef het schema op, want de waarden zijn URL’s, en codeer gereserveerde tekens in het wachtwoord zodat een apenstaartje de waarde niet splitst.

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

Met npm config list ziet u welk bestand elke effectieve waarde leverde. Een shell-export zoals npm_config_proxy kan het bestand overschrijven, en een project-.npmrc met een persoonlijk wachtwoord hoort nooit te worden gecommit. Druk het bronpad samen met de waarde af.

Laat strict-ssl aan staan. Een proxy die TLS inspecteert kan het bedrijfs-CA in de truststore vereisen; verificatie uitzetten om de fout te omzeilen verbergt het echte vertrouwensprobleem.

Maven scheidt proxy’s van mirrors

Maven leest proxy’s en mirrors uit het instellingenbestand van de gebruiker, niet uit de pom van het project. Zet netwerkspecifieke proxy’s en mirrors van de interne repository in ~/.m2/settings.xml, en laat openbare repositoryverklaringen in het project.

Het proxyblok heeft een id, een actief-vlag, het protocol, de host en poort, en een nonProxyHosts-regel voor de interne repository nodig. Houd die velden in het gebruikersbestand, niet in de pom, zodat een netwerkwijziging de build van het hele team niet herschrijft.

Voeg de interne repository toe aan nonProxyHosts zodat Maven rechtstreeks verbindt. Zonder die regel wordt de proxy een onnodige tussenstop en lijkt de storing op een repository-storing. Een mirrorregel wijst naar de interne repository en vervangt de proxyinstelling niet.

Ontwikkelaars die tussen netwerken wisselen, kunnen één instellingenbestand per netwerk houden en bij het starten van de shell de juiste kopie kiezen. Eén bestand steeds met de hand aanpassen maakt van een werkende laptop een supportticket.

VS Code en dev-containers hebben verschillende naamruimten

VS Code leest http.proxy uit de gebruikers- of werkruimte-instellingen, inclusief schema en poort. Dat dekt de verzoeken van de editor aan extensies en de marktplaats, maar configureert geen terminal of container die vanuit de editor start. Controleer zowel de reikwijdte van de instelling als de waarde. Een werkruimte-instelling kan de gebruikersinstelling voor één project overschrijven.

Een dev-container heeft zijn eigen netwerknaamruimte. Hij erft de proxyvariabelen en de VPN-route van de host niet, waardoor een aanroep naar de marktplaats in de container kan falen terwijl dezelfde aanroep op de host werkt.

Geef de container die variabelen, of geef hem een eigen resolver en route. Als namen binnenin worden opgelost maar de proxy nooit antwoordt, ontbreekt meestal de route, niet het adres.

Bypasslijsten en voorrang van de omgeving

Voeg de VPN-gateway, interne registers en privé-DNS-suffixen toe aan de bypasslijst. Als de client de gateway via de proxy probeert te bereiken voordat de tunnel bestaat, mislukt de verbinding op een manier die op een proxy-storing lijkt. Test dat met de tunnel neer.

Omgevingsvariabelen en bestanden kunnen het oneens zijn. Draai de configuratiedump van het hulpmiddel, niet die van de shell, en vergelijk de waarden. Een dubbele variabele in kleine letters, een oude waarde in een bovenliggende shell of een projectbestand kunnen de instelling die u net hebt aangepast overrulen.

Geef de proxy in CI door als geheime variabele en test één pakketinstallatie in dezelfde image. Een 407 in een container betekent vaak dat de variabele daar simpelweg ontbreekt, terwijl de shell van de host hem wel heeft.

Noteer proxhost, poort, bypass-suffixen en het bestand of de variabele die ze levert voor elk hulpmiddel. Als de ene client 407 teruggeeft en de andere werkt, maakt die notitie van de vergelijking van vier configuraties een korte controle.

Gerelateerde artikelen