在golang的使用过程中,我们会经常发现有些国外的站点因为被墙导致使用go get访问不了,此时我们可以设置代理。如下适用于Go 1.13及之后的版本。

1. go proxy设置

在Go 1.13中,我们可以通过GOPROXY来控制代理,以及通过GOPRIVATE控制私有库不走代理。

  • 设置GOPROXY代理
# go env -w GOPROXY=https://goproxy.cn,direct
  • 设置GOPRIVATE来跳过私有库,使其不走代理。比如常用的GitLab或Gitee,中间使用逗号分割
# go env -w GOPRIVATE=*.gitlab.com,*.gitee.com
  • 如果在运行go mod vendor时,提示
Get https://sum.golang.org/lookup/xxxxxx: dial tcp 216.58.200.49:443: i/o timeout

则是因为Go 1.13设置了默认的GOSUMDB=sum.golang.org,这个网站是被墙了的,用于验证包的有效性,可以通过如下命令关闭:

# go env -w GOSUMDB=off

这样私有仓库就会自动忽略验证。

  • 可以设置GOSUMDB=”sum.golang.google.cn”,这个是专门为国内提供的sum验证服务
# go env -w GOSUMDB="sum.golang.google.cn"
  • -w标记要求一个或多个形式为NAME=VALUE的参数,并且覆盖默认的设置



[参看]:

  1. go proxy 设置