GOPROXY と HTTP_PROXY:モジュールソースとフォワードプロキシ
Go が選ぶモジュールソースと、そのソースへ到達するために使うフォワードプロキシの経路を分けて考えます。
GOPROXY は Go のモジュールダウンロードサービスを選択します。HTTP_PROXY と HTTPS_PROXY は接続先へ到達するためのネットワーク仲介者を選択します。一般的な HTTP プロキシは、通常、モジュールサービスのメタデータ API やファイル API を実装していません。
モジュールソースのポリシー
go env GOPROXY GOPRIVATE GONOPROXY
これらの値は、Go がどこからモジュールを取得するかを表します。GONOPROXY はモジュールサービスをバイパスするモジュールパスを選択します。同様に GOPROXY=direct はモジュールのバージョン管理アクセスを要求しますが、すべての接続で HTTP プロキシ変数を無効にするわけではありません。
ネットワーク経路
POSIX シェルの呼び出しで、モジュールソースとは独立してフォワードプロキシを指定できます。
HTTPS_PROXY=http://203.0.113.10:8080 go mod download
ドキュメント用のエンドポイントを置き換え、意図した GOPROXY の値を維持します。公開 HTTP プロキシの使用が許可された公開モジュールのダウンロードでは、HTTP プロキシ一覧から候補を選びます。直接接続のままにする HTTP 転送先には NO_PROXY を使います。
モジュールポリシーによっては、ダウンロードがモジュールサービス、チェックサムサービス、成果物ホスト、またはバージョン管理サーバーに接続します。リクエストが失敗したら、Go が選択したソースと、そのホストへ到達するために使った経路の両方を確認します。go env の問い合わせだけでは、すべてのプロキシ環境変数も、ダウンロードがどの接続を開いたかも分かりません。