golang如何实现proxy代理简单方法
package main
import (
"io"
"log"
"net/http"
"net/http/httputil"
"net/url"
)
func handleRequestAndRedirect(res http.ResponseWriter, req *http.Request) {
// 创建一个反向代理的目标URL
targetURL, err := url.Parse("http://www.example.com")
if err != nil {
log.Fatal(err)
}
// 创建一个新的反向代理实例
proxy := httputil.NewSingleHostReverseProxy(targetURL)
// 更新请求头,设置代理服务器的地址
req.URL.Host = targetURL.Host
req.URL.Scheme = targetURL.Scheme
req.Header.Set("X-Forwarded-Host", req.Header.Get("Host"))
req.Host = targetURL.Host
// 执行反向代理请求
proxy.ServeHTTP(res, req)
}
func main() {
// 注册代理处理函数
http.HandleFunc("/", handleRequestAndRedirect)
// 启动代理服务器
if err := http.ListenAndServe(":8080", nil); err != nil {
log.Fatal(err)
}
}