golang 搭建公司内部私有库代理服务器

1,506 阅读1分钟

背景

在公司局域网内部可以访问使用go代理(七牛、阿里,golang中国) 同时也需访问公司内部服务器代码不走公网

准备工作

  • 一台用于代理的服务器 192.168.1.125
  • athens
  • nginx
  • git环境
  • golang 环境

搭建工作

1.安装athens

github.com/gomods/athe…

修改config.dev.toml

GoBinaryEnvVars = ["GOPROXY=direct"]

GlobalEndpoint = "https://goproxy.cn"

FilterFile = "filterfile.toml"

NETRCPath = "netrc.toml"

SumDBs = ["https://sum.golang.google.cn"]

NoSumPatterns = ["私有库域名/*"]

StorageType = "disk"

[Storage.Disk]

    # RootPath is the Athens Disk Root folder

    # Env override: ATHENS_DISK_STORAGE_ROOT

    RootPath = "E:/data"

filterfile.toml 文件

    D
    # 内网的gitlab不需要通过GlobalEndpoint下载
    + git.company.com/xxx/xxx`

.netrc netrc

   # 采用账户配置,也可以采用SSH具体谷歌
   machine 192.168.1.125

   login username

   password password

2.代理服务器的本机添加一条路由

ip 为私有git的局域网地址:192.168.1.125,私有库名为go.mod的import前缀,例如 git.company.com

192.168.1.125 私有库域名

3.配置nginx

生成SSL免费自签名证书

blog.csdn.net/qq_28018929…

配置nginx

server {

listen 443 ssl;

server_name git.company.com;

ssl on;

ssl_certificate server.crt;#配置证书位置

ssl_certificate_key server.key;#配置秘钥位置

#ssl_client_certificate ca.crt;#双向认证

#ssl_verify_client on; #双向认证

ssl_session_timeout 5m;

ssl_protocols SSLv2 SSLv3 TLSv1;

ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;

ssl_prefer_server_ciphers on;

location / {

if ($args ~* "^go-get=1") {

return 200 "";

}

root html;

index index.html index.htm;

proxy_pass http://192.168.1.125;

}

}

4.修改golang源码go get 忽略不安全的证书

https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/599b0b7aee1d4be0af702248d419a31d~tplv-k3u1fbpfcp-zoom-1.image go 源码安装参照:studygolang.com/articles/28…

编译完成后替换代理服务器上golang环境下bin\go.exe

5.修改客户端环境变量

windows :

go env -w GOPROXY=http://192.168.1.125:3000

go env -w GONOSUMDB=git.company.com/*