46 lines
952 B
Go
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)
|
|
}
|