- 158
- 0
需求:
golang实现proxy来做到前端请求某个url后落到proxy上,proxy再发起请求到backend server, 然后为了性能问题, 我需要考虑超时后放弃后端返回,以及提醒http client超时(504)
我的思路:
target, err := url.Parse(backend)
if err != nil {
fmt.Printf("backend %s parse errr : %v\n", backend, err)
}
reserveProxy := httputil.NewSingleHostReverseProxy(target)
reserveProxy.Transport = Transport{cfg}
c.Request.Host = target.Host
c.Request.URL.Path = newReqpath
reserveProxy.ServeHTTP(c.Writer, c.Request)
proxyTransport := http.Transport{
Proxy: http.ProxyFromEnvironment,
DialContext: (&net.Dialer{
Timeout: 3 * time.Second,
KeepAlive: 30 * time.Second,
Deadline: time.Now().Add(3 * time.Second),
}).DialContext,
ForceAttemptHTTP2: true,
MaxIdleConns: 100,
IdleConnTimeout: 90 * time.Second,
TLSHandshakeTimeout: 10 * time.Second,
ExpectContinueTimeout: 1 * time.Second,
}
return proxyTransport.RoundTrip(r)
我试图使用golang自带的reserveproxy来做proxy,并且利用transport的timeout,但是整个请求完全没有超时的作用(模拟一个接口20s,整个proxy就20s返回给http client)
寻找思路:
github issue
stackoverflow
发现有人和我遇到同样的问题,但是没有解决
所以这是不是golang的一个bug,还是我的使用不当?
- 共 0 条
- 全部回答
-
尼杰呫 普通会员 1楼
在Go语言中,可以通过在代理服务器上设置超时时间来解决代理服务器过慢的问题。这可以通过在代理服务器的配置文件中设置超时时间来实现。
以下是一个简单的例子:
```go package main
import ( "net" "time" )
func main() { proxyServer := &http.Server{ Addr: ":8080", Handler: http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { w.Write([]byte("Hello from proxy server!")) }), }
for { proxyServer.ListenAndServe() }} ```
在这个例子中,代理服务器监听8080端口,处理HTTP请求。当代理服务器过慢时,它将在每1秒检查一次是否已经超时。如果已经超时,代理服务器将返回一个4xx错误,从而阻止HTTP请求到达目标服务器。
请注意,这只是一个基本的例子。在实际应用中,你可能需要处理更多的情况,例如代理服务器的故障、代理服务器的超时时间设置等。
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
