gpt4 book ai didi

go - 如何使用 go 从端口 80 无缝地管道/转发到端口 XXXX?

转载 作者:数据小太阳 更新时间:2023-10-29 03:33:00 24 4
gpt4 key购买 nike

我有一堆网站在一台服务器(单一 IP)上运行,它们都在高端口上运行,所以我不需要 root 来运行它们。

当有人从一个网址访问时,比方说,http://address001.com/ ,我想将数据从端口 4444 无缝地传输到发出这个请求的人,如果有人访问 http://address002.com/我想从端口 5555 传输数据。

我将如何在 Go 中执行此操作?

到目前为止,我有一个如下所示的处理函数:

func home(w http.ResponseWriter, r *http.Request) {                      
if strings.Contains(r.Host, "address001") {
// ???
}
}

最佳答案

您可以使用 httputil 的 ReverseProxy

示例代码

package main

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

func main() {
director := func(req *http.Request) {
switch req.Host {
case "address001.com":
req.URL.Host = "localhost:4444"
req.URL.Scheme = "http"
case "address002.com":
req.URL.Host = "localhost:5555"
req.URL.Scheme = "http"
default:
log.Println("error")
}
}
proxy := &httputil.ReverseProxy{Director: director}
log.Fatalln(http.ListenAndServe(":8080", proxy))
}

关于go - 如何使用 go 从端口 80 无缝地管道/转发到端口 XXXX?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45558049/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com