• go 端口转发 代理V2 --chatGPT


    问:broker(localPort, targetPort), 实现远程访问localPort的http代理转发到目标机器
    gpt:

    要实现一个简单的 HTTP 代理服务器,你可以使用 Go 的 `net/http` 包来处理 HTTP 请求和响应。以下是一个示例,演示如何创建一个 HTTP 代理服务器将本地端口的请求转发到目标机器的指定端口:

    ```go
    package main

    import (
        "fmt"
        "net/http"
        "net/http/httputil"
        "net/url"
        "os"
    )

    func main() {
        if len(os.Args) != 3 {
            fmt.Println("Usage: ./proxy ")
            return
        }

        localPort := os.Args[1]
        targetURL := os.Args[2]

        // 解析目标 URL
        target, err := url.Parse(targetURL)
        if err != nil {
            fmt.Println("Invalid target URL:", err)
            return
        }

        // 创建反向代理
        proxy := httputil.NewSingleHostReverseProxy(target)

        // 处理代理请求
        http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
            // 更改请求头中的 Host 以确保它匹配目标主机
            r.Host = target.Host
            proxy.ServeHTTP(w, r)
        })

        // 启动代理服务器
        fmt.Printf("Proxy server listening on :%s and forwarding to %s\n", localPort, targetURL)
        err = http.ListenAndServe(":"+localPort, nil)
        if err != nil {
            fmt.Println("Proxy server error:", err)
        }
    }
    ```

    在这个示例中,我们首先解析命令行参数以获取本地端口和目标 URL。然后,我们使用 `httputil.NewSingleHostReverseProxy` 创建一个反向代理,该代理将请求转发到指定的目标 URL。最后,我们创建一个 HTTP 处理函数来处理所有的请求,将请求头中的 Host 字段修改为目标主机的 Host,并使用反向代理来处理请求。

    你可以在命令行中运行这个程序,如下所示:

    ```shell
    ./proxy 8080 http://example.com:80
    ```

    这将会创建一个代理服务器,监听本地端口 8080,并将请求转发到 `http://example.com:80`。你可以根据需要修改本地端口和目标 URL。请注意,这只是一个简单的示例,实际的代理服务器可能需要更多的配置和安全性措施。

  • 相关阅读:
    前端开发tips
    ALV报表学习总结
    jQuery常用API--效果
    模型案例推荐:电力大数据项目案例模型分享
    django小区居民出入申报系统Vue+flask疫情防控社区疫苗预约系统python
    Patroni的执行流
    TensorFlow 的基本概念和使用场景
    Python_Numpy库的ndarray对象的属性有哪些?如何获取它们的值?
    AI实战营第二期 第五节 《目标检测与MMDetection》——笔记6
    Timer实现简单计时控制器,毫秒级误差,浅谈守护线程和用户线程
  • 原文地址:https://blog.csdn.net/glc22/article/details/133385005