網頁

2021/9/25

Golang Go環境變數 GOPROXY 作用

Go的環境變數GOPROXY的作用如下。


GOPROXY用來設定module proxy server的URL位址。

module proxy就像是Java的Maven repository,Python的PyPI,JavaScript的npm registry


執行Go module命令(例如go getgo mod tidy)時會從GOPROXY設定的module proxy server(預設為https://proxy.golang.org,direct)下載專案中依賴的module,並從GOSUMDB指定的校驗碼資料庫(checksum database)(預設為sum.golang.org)取得雜湊進行校驗

例如下面GOPROXY設定的URL為Go預設的https://proxy.golang.org,direct

GOPROXY=https://proxy.golang.org,direct

GOPROXY URL可接受httphttpsfile的scheme,若沒指定預設為https。例如下面效果同GOPROXY=https://proxy.golang.org

GOPROXY=proxy.golang.org

GOPROXY可設定多個module proxy URLs,使用逗號,或直線符號|分隔。例如下面設定兩個module proxy server URLs分別為https://proxy.golang.orghttps://goproxy.io

GOPROXY=https://proxy.golang.org,https://goproxy.io

逗號,分隔則從第一個URL下載module出現404或410錯誤會改從下一個URL下載,至於其他錯誤則直接終止;直線符號|分隔則從第一個URL下載module出現任何錯誤都會改從下一個URL下載。

GOPROXY除了URL,另外可設定兩個關鍵字offdirect

  • off:禁止從任何來源下載module。
  • direct:直接從module的版本庫(例如GitHub、GitLab)下載,不從module proxy下載

例如下面禁止Go從任何來源下載module。

GOPROXY=off

下面設定Go先從ttps://proxy.golang.org module proxy下載module,若不存在則改從module的版本庫下載。

GOPROXY=https://proxy.golang.org,direct


Module proxy URL、module path及版號組成對該module的資源請求位址,格式為$base/$module/@v。以module proxy https://proxy.golang.orguber go zap module為例:



沒有留言:

張貼留言