package main import ( "log" "net/http" "github.com/darkit/goproxy" "github.com/darkit/goproxy/pkg/dns" ) // WildcardDNSDelegate 通配符 DNS 代理委托 type WildcardDNSDelegate struct { goproxy.DefaultDelegate dnsResolver *dns.WildcardResolver } // ResolveBackend 解析后端服务器 func (d *WildcardDNSDelegate) ResolveBackend(req *http.Request) (string, error) { return d.dnsResolver.Resolve(req.URL.Host) } func main() { // 创建 DNS 解析器 resolver := dns.NewWildcardResolver(map[string]string{ "*.example.com": "http://backend.example.com", "*.test.com": "http://backend.test.com", }) // 创建通配符 DNS 代理委托 delegate := &WildcardDNSDelegate{ dnsResolver: resolver, } // 创建代理实例 proxy := goproxy.NewProxy( goproxy.WithDelegate(delegate), ) // 启动代理服务器 log.Println("通配符 DNS 代理服务器启动在 :8080") log.Println("DNS 配置:") log.Printf("- *.example.com -> backend.example.com\n") log.Printf("- *.test.com -> backend.test.com\n") if err := http.ListenAndServe(":8080", proxy); err != nil { log.Fatalf("代理服务器启动失败: %v", err) } }