我开始迁移一个Go项目,以使用模块进行依赖关系管理。我的公司有一个内部go代理,它只托管私有模块。因此,我需要一种从内部代理下载私有模块的方法,比方说,从一个公开可用的go代理(如goproxy.company.com )下载golang.org/x/tools/cmd/goimports和github.com/sirupsen/logrus等公共模块。我以为这能解决这个问题。
GOPROXY='goproxy.company.com,proxy.golang.org,direct'
GPPRIVATE=*.company.com/*
但是,在尝试了第一个代理和第二个代理之后,它失败了,并且从来没有使用direct选项作为后盾。这是已知的问题还是我做错了什么?
有更好的方法吗?期望公司内部代理托管公开可用的go模块是否正常?这是一般的期望吗?
我看完医生后就有这种感觉了。这是参考资料。
正如建议:保障公众围棋模块生态系统的安全中提到的 我们期望企业环境可以通过内部代理获取所有模块,包括公共模块和私有模块;此外,在企业代理的去看医生示例中也是如此。 例如,如果一家公司运行一个为私有模块服务的模块代理,用户将使用以下方法配置go: GOPRIVATE=*.corp.example.com GOPROXY=proxy.example.com GONOPROXY=none 这将告诉go命令和其他工具,以corp.example.com子域开头的模块是私有的,但是公司代理应该用于下载公共模块和私有模块,因为
GONOPROXY设置为与任何模块不匹配的模式,覆盖GOPRIVATE。
发布于 2020-08-16 00:20:32
Go 1.15添加了一个特性,它现在允许您将GOPROXY设置为跳过代理。
GOPROXY环境变量现在支持跳过返回错误的代理。代理URL现在可以用逗号(,)或管道字符(X)分隔。如果代理URL后面跟着逗号,则go命令将只在404或410 HTTP响应之后尝试列表中的下一个代理。如果代理URL后面跟着管道字符,则在发生任何错误后,go命令将尝试列表中的下一个代理。请注意,GOPROXY的默认值仍然是https://proxy.golang.org,direct,如果出现错误,它不会返回到直接值。
这应该允许您设置GOPROXY,正如您在问题中所指出的那样。
https://stackoverflow.com/questions/62527648
复制相似问题