When using golang for network communication (such as http requests), sometimes you need to set up a proxy to access external network resources. This article will introduce how to set up golang proxy.
First you need to set the environment variables HTTP_PROXY and HTTPS_PROXY. The values of these two variables are the address and port number of the proxy server, for example:
Linux/MacOS system:
export HTTP_PROXY=http://proxy.server.address:port export HTTPS_PROXY=https://proxy.server.address:port
Windows system:
set HTTP_PROXY=http://proxy.server.address:port set HTTPS_PROXY=https://proxy.server.address:port
If you only need to set the proxy temporarily, you can use it in the program http.ProxyFromEnvironment gets proxy information:
import ( "net/http" ) func main() { // 从环境变量中获取代理信息 proxy := http.ProxyFromEnvironment // 创建HTTP客户端 client := &http.Client{ Transport: &http.Transport{ Proxy: proxy, }, } // 发送GET请求 resp, err := client.Get("https://www.google.com") if err != nil { // 处理错误 } // 关闭响应体 defer resp.Body.Close() // 读取响应内容 // ... }
If you need to set a specific proxy, you can use the NewSingleHostReverseProxy function in the net/http/httputil package to create a proxy:
import ( "net/http" "net/http/httputil" "net/url" ) func main() { // 创建代理服务器的URL proxyUrl, _ := url.Parse("http://proxy.server.address:port") // 创建ReverseProxy reverseProxy := httputil.NewSingleHostReverseProxy(proxyUrl) // 创建HTTP服务器 http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { // 设置代理信息 r.URL.Host = "www.google.com" r.URL.Scheme = "https" // 将请求转发给代理服务器 reverseProxy.ServeHTTP(w, r) }) // 启动HTTP服务器 http.ListenAndServe(":8080", nil) }
The above is how to set up the golang proxy , you can choose different methods according to specific needs. In practical applications, it is necessary to pay attention to the security and reliability of the proxy server to ensure the security and stability of network communication.
The above is the detailed content of golang set proxy. For more information, please follow other related articles on the PHP Chinese website!