package main import ( "log" "net/http" "net/url" "github.com/darkit/goproxy" ) // ReverseProxyDelegate 反向代理委托 type ReverseProxyDelegate struct { goproxy.DefaultDelegate backendURL *url.URL } // ResolveBackend 解析后端服务器 func (d *ReverseProxyDelegate) ResolveBackend(req *http.Request) (string, error) { return d.backendURL.String(), nil } // RunReverseProxy 运行反向代理服务器 func main() { // 解析后端服务器地址 backendURL, err := url.Parse("http://localhost:8081") if err != nil { return } // 创建反向代理委托 delegate := &ReverseProxyDelegate{ backendURL: backendURL, } // 创建代理实例 proxy := goproxy.NewProxy( goproxy.WithDelegate(delegate), goproxy.WithReverseProxy(true), ) // 启动代理服务器 log.Println("反向代理服务器启动在 :8080") log.Printf("请求将被转发到: %s\n", backendURL.String()) http.ListenAndServe(":8080", proxy) }