Golang gin gonic web 框架代理路由到另一个后端

标签 go reverse-proxy go-gin

如何在 Gin Gonic 中将一些路由的代理 Web 请求反向到另一个后端网页golang框架

有没有办法在Handle函数中直接转发如下图?

路由器 := gin.New() router.Handle("POST", "/api/v1/endpoint1", ForwardToAnotherBackend)

最佳答案

这是我用于将特定端点子集从 gin 框架反向代理到另一个后端的解决方案:

router.POST("/api/v1/endpoint1", ReverseProxy())

和:

func ReverseProxy() gin.HandlerFunc {

    target := "localhost:3000"

    return func(c *gin.Context) {
        director := func(req *http.Request) {
            r := c.Request

            req.URL.Scheme = "http"
            req.URL.Host = target
            req.Header["my-header"] = []string{r.Header.Get("my-header")}
            // Golang camelcases headers
            delete(req.Header, "My-Header")
        }
        proxy := &httputil.ReverseProxy{Director: director}
        proxy.ServeHTTP(c.Writer, c.Request)
    }
}

关于Golang gin gonic web 框架代理路由到另一个后端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38970561/

相关文章:

go - 从 Golang 中的 AWS Lambda 函数读取参数

apache - 如何在子域中的反向代理后面运行PrimeFaces?

go - 以编程方式在 gin 上下文中设置 url 参数以进行测试

authentication - 使用 Nginx 进行 ElasticSearch 集群身份验证

go - 动态添加Kafka主题以从中使用,而无需重新启动GoLang应用程序

go - 高并发下Go `net/http`的一些困惑

正则表达式组选择

go - 通过设置 Local 在 go 中全局设置时区

windows - 如何在 gometalinter 中禁用 pkcs11?

nginx - nginx 反向代理背后的服务器忽略 URL 中的相对路径