"go get" 使用 http_proxy 时忽略 GOPROXY

"go get" ignores GOPROXY when using http_proxy

我正在尝试让 Go 使用内部企业 Go-Proxy 进行模块下载 - 这需要 http_proxy 才能访问(企业防火墙)。然而 go get -u golang.org/x/lint/golint 失败了:

package golang.org/x/lint/golint: unrecognized import path "golang.org/x/lint/golint": https fetch: Get "https://golang.org/x/lint/golint?go-get=1": Forbidden

我的设置:

我检查过:

使用tcpdump,我发现运行 go get似乎忽略了我的GOPROXY,让我的http_proxy直接连接原来的url on golang.org ](为简洁起见省略了Options/sequence和ack号),proxy/firewall块。

06:52:53.926397 IP <my_ip.port> > <proxy.port>: Flags [S], length 0
06:52:53.927206 IP <proxy.port> > <my_ip.port>: Flags [S.], length 0
06:52:53.927232 IP <my_ip.port> > <proxy.port>: Flags [.], length 0
06:52:53.932003 IP <my_ip.port> > <proxy.port>: Flags [P.], length 89: HTTP: CONNECT golang.org:443 HTTP/1.1
06:52:53.932638 IP <proxy.port> > <my_ip.port>: Flags [.], length 0
06:52:53.933100 IP <proxy.port> > <my_ip.port>: Flags [P.], length 3939: HTTP: HTTP/1.1 403 Forbidden

问题:为什么Go会忽略GOPROXY?我是不是设置不正确?

我在 golang:1.15.3 Docker 容器中使用 Go 1.15.3(添加了一些检查连接的工具)

试试这个:设置 GO111MODULE=on 以使用 GOPROXY 或者 运行 go mod init 在你之前 运行 go get