本机设了 http_proxy 后,访问 10.0.3.15:8080 的内网服务报 407 Proxy Authentication Required,curl 和程序里都一样。第一次遇到会往复杂处想,其实漏掉的多是个小前提。
export no_proxy=localhost,127.0.0.1,10.0.0.0/8,.internal curl -v http://10.0.3.15:8080/health
http_proxy 对所有 http 请求生效,内网地址也被送进代理。代理不认识这个目标,直接要求认证,NO_PROXY 没配或者写成了它识别不了的形式。这一点先确认清楚,后面就不用反复试。
碰到「代理环境连接」这类问题,我习惯先把当前配置原样备份一份,改坏了立刻换回来,不用现场推。新版本先放一台机器上跑一天再全量,问题一般在这段时间暴露。
备份不是备了就行,恢复一次才算数,很多备份文件打开才发现是空的。接口问题先分清是没发出去、发出去了没收到,还是收到了处理失败。
偶发问题先统计频率,一小时几次和一天一次,查法完全不同。
具体做法是,配 no_proxy 列出内网域名和网段;同时设大写和小写两个变量;程序里对内网地址单独走直连;用 curl -v 确认没有再发 CONNECT。
改完照着核一遍,curl 输出里不再出现 CONNECT,内网请求返回 200,公网请求仍然走代理。
