407 detrás do proxy VPN da empresa: npm, Maven e VS Code
Un 407 significa que o proxy quere credenciais, non que o rexistro estea caído. Configura npm, Maven, VS Code e os contedores, e exime os hosts internos.
Que a páxina interna cargue no navegador só demostra que o proxy funciona para o navegador, non para npm nin Maven. Cada cliente le a súa propia configuración, e unha rede á que só se chega por VPN engade outra pregunta: se o cliente alcanza o proxy. Empeza polo código de estado e segue a cadea de configuración da ferramenta que fallou. Por iso un cliente funciona e o de ao lado non.
Que demostra de verdade un 407
Un 407 Proxy Authentication Required vén do proxy, non do rexistro nin do repositorio. O cliente chegou ao proxy e este rexeitou a petición, normalmente porque faltaban credenciais, estaban mal formadas ou non se aceptaban para ese destino.
Un tempo de espera esgotado conta outra historia: enderezo de proxy incorrecto, ningunha ruta ao proxy antes de levantar o túnel ou unha entrada de omisión que falta para un host interno. Le o texto do erro antes de cambiar as credenciais.
Confirma host e porto do proxy, esquema de autenticación e se o usuario necesita prefixo de dominio. Logo comproba se a ferramenta le ese valor dun ficheiro, dunha variable de contorno ou de ambos. Un usuario con dominio é unha causa habitual de 407, igual que un contrasinal gardado con codificación incorrecta.
npm le a súa propia cadea de configuración
npm acepta as claves proxy e https-proxy nun .npmrc de usuario ou de proxecto. Inclúe o esquema, porque os valores son URL, e codifica os caracteres reservados do contrasinal para que un arroba non parta o valor.
proxy=http://proxy.example.com:8080
https-proxy=http://proxy.example.com:8080
strict-ssl=true
Con npm config list ves que ficheiro achegou cada valor efectivo. Unha exportación de shell como npm_config_proxy pode anular o ficheiro, e un .npmrc de proxecto con contrasinal persoal nunca debería confirmarse. Imprime a ruta de orixe xunto co valor.
Mantén strict-ssl activado. Un proxy que inspecciona TLS pode esixir o CA corporativo no almacén de confianza; desactivar a verificación para sortear o erro oculta o problema real de confianza.
Maven separa os proxies dos espellos
Maven le proxies e espellos do ficheiro de axustes do usuario, non do pom do proxecto. Pon os proxies de rede e os espellos do repositorio interno en ~/.m2/settings.xml, e deixa as declaracións públicas no proxecto.
O bloque de proxy necesita un id, unha marca de activación, o protocolo, o host, o porto e unha entrada nonProxyHosts para o repositorio interno. Colócaos no ficheiro do usuario, non no pom, para que un cambio de rede non reescriba a compilación de todo o equipo.
Engade o repositorio interno a nonProxyHosts para que Maven conecte directo. Sen esa entrada o proxy é un salto innecesario e o fallo parece unha caída do repositorio. A entrada de espello apunta ao repositorio interno e non substitúe o axuste do proxy.
Quen cambia de rede pode manter un ficheiro de axustes por rede e escoller a copia correcta ao arrincar o shell. Editar un só ficheiro a man en cada cambio converte un portátil que funciona nun ticket de soporte.
VS Code e os contedores de desenvolvemento teñen espazos de nomes distintos
VS Code le http.proxy dos axustes de usuario ou do espazo de traballo, incluídos esquema e porto. Iso cobre as peticións do editor a extensións e ao marketplace, pero non configura unha terminal nin un contedor lanzado desde o editor. Revisa o ámbito do axuste ademais do valor. Un axuste de espazo de traballo pode anular o de usuario para un proxecto.
Un contedor de desenvolvemento ten o seu propio espazo de nomes de rede. Non herda as variables de proxy nin a ruta VPN do host, por iso unha chamada ao marketplace pode fallar dentro do contedor mentres a mesma chamada funciona no host.
Dálle ao contedor esas variables, ou o seu propio resolvedor e a súa ruta. Cando os nomes se resolven dentro pero o proxy nunca responde, o que falta adoita ser a ruta, non o enderezo.
Listas de omisión e precedencia da contorna
Engade a pasarela VPN, os rexistros internos e os sufixos DNS privados á lista de omisión. Se o cliente tenta chegar á pasarela a través do proxy antes de que exista o túnel, a conexión falla como se o proxy estivese caído. Proba esa omisión co túnel caído.
As variables de contorno e os ficheiros poden discrepar. Executa o volcado de configuración da ferramenta, non o do shell, e compara os valores. Unha variable duplicada en minúsculas, un valor vello nun shell pai ou un ficheiro do proxecto poden impoñerse ao axuste que acabas de editar.
En CI pasa o proxy como variable secreta e proba a instalación dun paquete na mesma imaxe. Un 407 dentro dun contedor adoita significar que a variable simplemente non está alí, mentres o shell do host si a ten.
Anota host e porto do proxy, sufixos de omisión e o ficheiro ou variable que os achega para cada ferramenta. Cando un cliente devolve 407 e outro funciona, ese rexistro converte a comparación de catro configuracións nunha comprobación breve.