基于TCP的双向流API在生产环境触发Nginx 499错误,无法正常命中端点的排查求助
基于TCP的双向流API在生产环境触发Nginx 499错误,无法正常命中端点的排查求助
大家好,我最近碰到个生产环境的棘手问题,想请各位大佬支支招:
我自己写了一个基于TCP的双向流API,在本地测试环境跑起来完全没问题,双向数据传输都很正常。但部署到生产环境后,这个API根本没法正常命中后端端点,完全用不了。
先说说我们生产环境的架构:前端是Cloudflare,后面接AWS ELB负载均衡器,再往后是跑着Nginx的EC2实例。
一开始我连Nginx的访问日志都看不到任何请求记录,猜测是不是Cloudflare或者ELB把请求拦住了?于是我绕开Cloudflare,直接用EC2的公网IP发起请求,这时候终于在Nginx日志里看到了请求痕迹,但所有请求全是499错误,日志内容如下:
[16/Sep/2024:03:13:50 +0000] "POST /api/user_sync HTTP/1.1" 499 0 "-" "MYAPP/1.0.6 CFNetwork/1494.0.7 Darwin/23.6.0"
我查了下Nginx的499错误码,说是客户端主动中止了连接,但我在客户端侧的日志里明明看到连接是直到超时才会断开的,可Nginx里的499几乎是瞬间就打出来了——感觉请求刚到Nginx就被直接掐断了,根本没传到我的API服务里。
可惜我在Nginx、负载均衡这块经验不多,现在实在摸不着头绪,不知道该从哪个方向入手排查。有没有大佬能给点可能的原因或者排查建议?
备注:内容来源于stack exchange,提问作者StainlessSteelRat
相关产品推荐
相关产品推荐

