Files
demo/examples/other/reverse_proxy/reverse_proxy.go
2025-03-14 18:50:49 +00:00

46 lines
952 B
Go

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)
}