標題:GOPROXY 變數中的 direct 的作用是什麼
日期:2021-11-17 08:53:00
toc:true
類別:
- Golang
標籤: - 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 那麼自動 fallback 到下一個,其中 direct
的作用是直接回源(源指的是比如 GitHub 這種代碼托管服務)拉取代碼。
如果你有公司內部的模塊需要服務到,比如通過了 GOPRIVATE
等環境變數來指定,那麼你是必須在 GOPROXY
中包含 direct
的,否則 GOPRIVATE
之類的不能正常工作。
此外你的環境變數配置的確存在問題,主要是 https_proxy
這個環境變數配置錯了。如果你配置了 https_proxy
,那麼 Go HTTP client 是會優先使用它而不是 http_proxy
,此時使用 https_proxy
時會默認它的值是一個有正常簽名 TLS 證書的可以通過 HTTPS 協議訪問到的 URL,可你的是一個 http://
開頭的錯誤 URL。換句話說你這麼配置的話 Go HTTP client 所有請求都會失敗,因為連 TLS 握手階段都過不去,我之前在 goproxy/goproxy.cn#71 (comment) 這裡也有提到過。