Golang反向代理HTTP超时

pftdvrlh  于 2023-01-28  发布在  Go
关注(0)|答案(1)|浏览(256)

我有一个基于go的单主机反向代理正在我的应用程序中使用。代理发出的对下游服务的请求会超时,并在30秒后自动取消。
查看http包github后,我发现了类似的问题:https://github.com/golang/go/issues/28876.
建议的响应是需要设置HTTP超时,而不是TCP拨号部分,但我找不到这样做的配置。
需要一些帮助。

timeout := service.httpConfig.ProxyTimeout / 1000
proxy := httputil.NewSingleHostReverseProxy(clusterURL)
transport := http.DefaultTransport.(*http.Transport).Clone()
transport.ResponseHeaderTimeout = time.Duration(timeout) * time.Second

proxy.ServeHTTP(c.Writer, c.Request)

这样做没有帮助。即使我的ProxyTimeout是180,000,请求总是在30秒后抛出504。

esbemjvw

esbemjvw1#

尝试替换Transport,就像这样

proxy := httputil.NewSingleHostReverseProxy(clusterURL)

proxy.Transport = &http.Transport{
    Proxy: http.ProxyFromEnvironment,
    Dial: (&net.Dialer{
        Timeout:   180 * time.Second,
        KeepAlive: 180 * time.Second,
    }).DialContext,
    TLSHandshakeTimeout: 180 * time.Second,
}

proxy.ServeHTTP(c.Writer, c.Request)

并检查 *http.Server上的超时

httpServer := &http.Server{
  ReadTimeout:  180 * time.Second,
  WriteTimeout: 180 * time.Second,
}

相关问题