文件分片上传接口(Easyswoole)被nginx拦截,并返回状态码400和408的抓包排查过程

场景:前端上传的视频文件过大,做了一个分片上传的接口, 调试接口的时候,后端EasySwoole 程序接收不到请求,前端发现接口返回状态码408

遇到的问题:一个文件分三片上传,第一次请求接口正常,后面第二次请求就被nginx拦截,返回状态码400,紧接着请求又返回408,前端是App不好调试,只能从nginx和网络抓包分析问题

问题排查过程:

php程序接口日志无输出,直接打开Nginxaccess .log****,看日志:****

第一次请求成功,状态码是200。

第二次就请求失败了,状态码是400,

然后前端进行两次重传也是失败了,返回状态码还变成了408

因为前端是App调用的接口,看不到详细请求,只能在服务器抓包,Wireshark********分析前端的请求发现:

请求成功的是一个完整的http 请求,是流0,红色的标识客户端(App)发送的入参,每一个参数末尾有分隔符boundary

追踪这个流到流1,就是失败的请求,因为文件参数结尾没有boundary,服务器读取不了入参, 直接被 nginx 拦截了返回400, 也就没有响应数据。

前端进行重传的流2 和流3,nginx 还是接收不到完整的参数就返回了408

Nginx********文档描述:

在设置的超时时间参数client_header_timeout 和client_body_timeout 的时间内,服务端没有读取到正常的请求头和请求体,就会返回408,但是这个问题说明了服务端在接收两次请求都没有读取到对应的请求体,nginx 也会返回408,跟时间无关,修改时间参数解决不了问题

最后由前端手动加上了入参的boundary,就能正常上传:

相关推荐
爱喝水的鱼丶29 分钟前
SAP-ABAP:SAP基础数据校验工具开发系列博客(共5篇)第三篇:SAP接口对接开发:实现数据的实时/批量校验交互
运维·数据库·学习·性能优化·sap·abap·经验交流
難釋懷1 小时前
Nginx扩容
运维·nginx
绿虫光伏运维1 小时前
光伏监控运维系统哪家靠谱?
运维·光伏管理·光伏运维
木雷坞2 小时前
Docker Hub、GHCR、Quay 混在一起后,镜像源要分开测
运维·docker
LT10157974442 小时前
2026年物流RPA选型指南:物流供应链自动化场景适配
运维·自动化·rpa
AC赳赳老秦2 小时前
OpenClaw任务复盘自动化:统计每日完成工作、遗留问题,优化工作节奏
java·大数据·linux·运维·服务器·数据库·openclaw
雾岛心情2 小时前
【小铭邮箱】小铭邮箱工具箱公司版本导入VCF文件
运维·工具·exchage·o365·小铭邮件工具箱(公司版)
kaoa0002 小时前
Linux入门攻坚——79、XEN虚拟化-2
linux·运维·开发语言
AOwhisky2 小时前
学习自测(MySQL系列第一期、第二期)
linux·运维·数据库·学习·mysql·云计算
Kyrie_Li3 小时前
Kafka-基础知识总结
运维·分布式·kafka