使用 Go 标准库中的 net/http 包来实现 HTTP 请求的代理。

以下是一个简单的示例,它将从本地的 localhost:8080 端口接收所有传入的 HTTP 请求,并将它们转发到远程服务器 example.com 上:

package main

import (
    "log"
    "net/http"
    "net/http/httputil"
    "net/url"
)

func main() {
    remoteURL, err := url.Parse("<http://example.com>")
    if err != nil {
        log.Fatalf("Failed to parse remote URL: %v", err)
    }

    proxy := httputil.NewSingleHostReverseProxy(remoteURL)

    http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
        proxy.ServeHTTP(w, r)
    })

    log.Println("Proxy listening on localhost:8080...")
    if err := http.ListenAndServe("localhost:8080", nil); err != nil {
        log.Fatalf("Failed to start proxy: %v", err)
    }
}

使用 httputil.NewSingleHostReverseProxy() 创建了一个反向代理对象,然后将其绑定到根路径的 HTTP 处理函数中。当有请求到达时,处理函数会将其转发到远程服务器上,并将其响应返回给客户端。
您可以根据需要修改该示例,例如更改远程服务器的 URL、更改端口号、添加更多的路由规则等等。