在Golang中,可以使用net/http/httputil包实现反向代理。代码示例:
go
// 定义后端服务器
backend := "http://example.com"
// 创建反向代理
proxy := httputil.NewSingleHostReverseProxy(backend)
// 修改请求头中的host
proxy.ModifyResponse = func(resp *http.Response) error {
resp.Request.Host = "example.com"
return nil
}
func main() {
// 使用标准HTTP处理器启动HTTP服务器
http.ListenAndServe(":8000", proxy)
}
该示例创建httputil.NewSingleHostReverseProxy进行反向代理,并通过ModifyResponse修改响应请求的host为后端服务器host,从而隐藏真实后端服务器信息。
go
// 客户端请求反向代理
resp, err := http.Get("http://localhost:8000/")
客户端请求反向代理,反向代理再请求后端服务器,并返回响应,实现隐藏后端服务器信息的效果。