从go 1.13开始,go模块使用https://proxy.golang.org/缓存存储库。假设我在github.com/Ihtkas/库中有一个私有存储库作为go模块,并且我在另一个本地go代码sort.go中导入了这个模块。当我用GIT_TERMINAL_PROMPT=1构建本地代码时,使用本地存储库的登录凭据构建sort.go。在本例中,go是否在proxy.golang.com中缓存私有存储库?当其他人导入相同的私有包并使用有效的凭据访问包时,是否从proxy.golang.com为私有回购包提供服务,并将身份验证转发给github.com?我的问题是
无论如何,
都会在代理服务器?
中保存私有回购代码。
发布于 2019-11-19 09:16:41
如果我不设置GOPRIVATE
并从这些服务请求私有模块,那么有什么泄漏呢?代理和校验和数据库协议只向远程服务器发送模块路径和版本。如果您请求一个私有模块,镜像将尝试下载它,就像任何Go用户都会以同样的方式下载和失败一样。有关失败请求的信息不会在任何地方发布。请求的唯一跟踪将在内部日志中进行,这些日志受隐私策略控制。
使用GOPRIVATE工作,如https://golang.org/cmd/go/#hdr-Module_configuration_for_non_public_modules中描述的那样
GOPRIVATE环境变量
控制go命令认为是私有的模块(不可公开),因此不应该使用代理或校验和数据库。变量是模块路径前缀的逗号分隔列表( Go's path.Match语法中)。例如,
GOPRIVATE=*.corp.example.com,rsc.io/私有
使go命令将具有匹配任一模式的路径前缀的任何模块视为私有模块,包括git.corp.example.com/xyzzy、rsc.io/私有和rsc.io/私有/quux。
总结一下:如果它是一个私有模块,代理服务将尝试访问它,并将失败。我假设Go将返回到直接访问它,完全绕过代理。为了防止这一往返,将您的私有存储库添加到GOPRIVATE,如果您仍然关心它,请使用类似wireshark这样的方法来确保您的私有模块被直接访问。
https://stackoverflow.com/questions/58915985
复制相似问题