title: GOPROXY 変数の direct の役割は何ですか
date: 2021-11-17 08:53:00
toc: true
category:
- Golang
tags: - golang
- Golang
- 転載
- Go
- go
- goproxy
- GOPROXY
- direct
- 役割
- 変数
この記事は、GOPROXY 変数の direct の役割は何ですか・Issue #21・goproxy/goproxyから転載されました。
現在、このプロジェクトを使用して Go プロキシを構築していると、GORPOXY 変数をhttps://goproxy.cn,direct に設定すると、golang.org のパッケージはプロキシを経由せずに直接接続され、最終的にタイムアウトします。direct を削除すると、すべて正常に動作します。以下はプロキシプログラムのビルドコードです。何か間違っていますか?
GOPROXY
環境変数のカンマ区切りリストの役割は、前のリクエストが 404 または 410 を返した場合、自動的に次のリクエストにフォールバックすることです。その中で、direct の役割は、直接ソース(ソースは、GitHub などのコードホスティングサービスのことです)からコードを取得することです。
もし、会社内のモジュールをサービスとして提供する必要がある場合、たとえばGOPRIVATE
などの環境変数を使用して指定する場合、GOPROXY
には必ず direct を含める必要があります。そうしないと、GOPRIVATE
などが正常に機能しません。
また、環境変数の設定に問題があるようです。主な問題は、https_proxy
という環境変数の設定が間違っていることです。https_proxy
を設定した場合、Go の HTTP クライアントはhttp_proxy
ではなく、https_proxy
を優先して使用します。この場合、https_proxy
を使用すると、正常に署名された TLS 証明書を持つ HTTPS プロトコルでアクセスできる URL の値がデフォルトになりますが、あなたの場合はhttp://
で始まる間違った URL です。つまり、このように設定すると、Go の HTTP クライアントのすべてのリクエストが失敗します。TLS のハンドシェイク段階すら通過できないためです。以前、goproxy/goproxy.cn#71 (comment)で言及したこともあります。