"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
我的设置:
http_proxy
和 https_proxy
环境变量已设置
no_proxy
不包含我的 Go-Proxy 的 IP 或主机名
GOPROXY
已设置 (go env -w GOPROXY=https://artifactory.mycompany.com/api/go/myrepo-go-virtual
)
我检查过:
- 使用 curl 并直接查询 GOPROXY 服务器工作正常,我可以下载文件(因此 https_proxy 设置有效)
- 使用 curl 进行反检查并显式取消设置 http/https_proxy:如预期的那样没有连接
使用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
我正在尝试让 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
我的设置:
http_proxy
和https_proxy
环境变量已设置no_proxy
不包含我的 Go-Proxy 的 IP 或主机名GOPROXY
已设置 (go env -w GOPROXY=https://artifactory.mycompany.com/api/go/myrepo-go-virtual
)
我检查过:
- 使用 curl 并直接查询 GOPROXY 服务器工作正常,我可以下载文件(因此 https_proxy 设置有效)
- 使用 curl 进行反检查并显式取消设置 http/https_proxy:如预期的那样没有连接
使用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