部署Node应用后无法连接Git仓库,出现CONNECT隧道404错误求助
错误原因分析
从错误日志CONNECT tunnel failed, response 404和NR route_not_found来看,核心问题是部署在Kubernetes环境中的应用发起的Git仓库克隆请求,在通过代理服务器建立CONNECT隧道时被拒绝,代理服务器无法找到对应路由。
本地及本地Docker运行正常,说明代码逻辑、凭证、Git仓库地址均无问题,问题出在Kubernetes环境的网络配置上,大概率和代理规则、网络策略或服务网格路由有关。
排查与解决步骤
检查Pod内的代理环境变量
进入Pod查看是否配置了HTTP_PROXY/HTTPS_PROXY环境变量,如果存在,确认NO_PROXY变量是否包含内部GitHub域名github.companyDomain.com。内部域名通常不需要走代理,若未添加到NO_PROXY,代理服务器会尝试处理该请求但无对应路由,导致404。
可执行命令查看环境变量:env | grep -E "(PROXY|proxy)"若需要修改,可在Kubernetes Deployment的
env字段中添加或更新NO_PROXY配置。验证网络连通性与代理行为
在Pod内直接执行Git克隆或curl命令,观察请求过程:git clone https://validUserName:validPATToken@github.companyDomain.com/owner/repo-name.git # 或用curl测试CONNECT请求 curl -v -x <代理地址:端口> https://github.companyDomain.com若直接克隆成功,说明是应用层的代理配置问题(比如simple-git未继承系统代理);若仍失败,进一步确认代理服务器是否允许该域名的CONNECT请求。
检查Kubernetes网络策略与服务网格配置
如果集群使用了Istio、Linkerd等服务网格,或者配置了NetworkPolicy,需确认是否允许Pod向github.companyDomain.com:443发起出站请求,且服务网格的路由规则未错误拦截或重定向该请求。联系运维确认代理服务器规则
若必须通过代理访问内部GitHub,联系负责代理服务器的运维团队,确认代理是否配置了github.companyDomain.com的CONNECT路由规则,避免因代理未识别该域名导致的404错误。
内容的提问来源于stack exchange,提问作者karvai

