ALL_PROXY 与“Unknown scheme: http”错误
同一个端点能在 curl 中工作,程序却可能拒绝 ALL_PROXY 里的 http:// 值。支持哪些 scheme 由该变量的使用方决定。
同一个端点明明在 curl 里能用,proxy: unknown scheme: http 看起来就很荒唐。端点本身可能没问题。是另一个程序在解释这个变量。
环境变量名只是约定,并不是通用的网络 API。Go 的 golang.org/x/net/proxy 包采用面向 SOCKS 的 URL 处理方式。使用该解析器的程序,可能拒绝完整 HTTP 客户端在别处支持的 HTTP scheme。
找出报错的组件以及它读取的变量。检查它的版本和文档中列出的 scheme。除非对端服务确实支持 SOCKS5,否则不要把 http:// 改成 socks5://。如果这个程序要求 SOCKS5 且允许走公网线路,SOCKS5 代理列表提供了该协议的真实端点;其他客户端需要的 HTTP 线路请单独保留。
一则旧的 Docker Toolbox 报告涉及某个特定的历史实现。这并不是回退现代 Docker 安装的理由。当前 Docker 守护进程的 HTTP 代理设置有自己的文档化接口。
如果原因是一个不相关的继承而来的 ALL_PROXY 值,就在目标进程范围内删除或覆盖它。保留其他客户端所需的 HTTP 代理设置。同一个环境同时含有两个值,可能暴露出单个应用各自运行时永远不会显现的差异。