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 の問い合わせだけでは、すべてのプロキシ環境変数も、ダウンロードがどの接続を開いたかも分かりません。

関連記事