背景
在公司局域网内部可以访问使用go代理(七牛、阿里,golang中国) 同时也需访问公司内部服务器代码不走公网
复制代码
准备工作
  • 一台用于代理的服务器 192.168.1.125
  • athens
  • nginx
  • git环境
  • golang 环境
搭建工作

1.安装athens

修改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免费自签名证书

配置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;

}

}

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

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

5.修改客户端环境变量

windows :

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