upstream timed out (10060: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond) while reading response header from upstream

其他环境
¥50.00

Windows系统上试用nginx做websocket的反向代理(因为微信小程序要求websocket和https都必须是443端口,同一台服务器撒上造成端口冲突只能使用nginx做反向代理)。试图建立websocket连接时一直报错返回502,查看nginx错误日志logs/error.log发现好多 upstream timed out错误,如下:

2021/01/27 14:06:13 [error] 27948#27940: *5190 upstream timed out (10060: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond) while reading response header from upstream, client: 115.60.59.6, server: test.com, request: "GET /wss HTTP/1.1", upstream: "http://127.0.0.1:8010/wss", host: "test.com"
2021/01/27 14:06:28 [error] 27948#27940: *5194 upstream timed out (10060: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond) while reading response header from upstream, client: 115.60.59.6, server: test.com, request: "GET /wss?userId=1&gameid=1 HTTP/1.1", upstream: "http://127.0.0.1:8010/wss?userId=1&gameid=1", host: "test.com"
2021/01/27 14:06:48 [error] 27948#27940: *5202 upstream timed out (10060: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond) while reading response header from upstream, client: 115.60.59.6, server: test.com, request: "GET /wss HTTP/1.1", upstream: "http://127.0.0.1:8010/wss", host: "test.com"

排查了好久找不到原因,谁碰到过类似的错误吗?

最佳答案

原因分析

错误原因是你后端的websocket程序错误或者配置错误

出现upstream timed out的错误日志说明websocket已经和nginx建立链接,nginx把请求转发到后端程序时连接不上后端的websocket服务才报的错。需要检查你后端的websocket服务是否有程序或者配置错误,从以下几个方面排查:


1、nginx转发的地址是否正确,也就是 proxy_pass  http://127.0.0.1:8099; 这里的地址是否正确


2、nginx转发的端口号和websocket服务监听的端口是否一致,如果转发到8099,websocket的监听的9099肯定链接不上


3、websocket的服务和nginx转发协议是否一致,一般nginx本身配置了ssl证书,后端服务器直接监听ws了就可以了。如果后端监听服务指定了wss就会报错

欢乐大象 T0 被采纳率100%
2021-01-27 14:23
打赏 1 0
页面统计
203 访问
1 帮助
0.00 打赏

hierror 2019 © hierror.com 京ICP备13026190号-1

通知消息
  • 暂无任何消息