You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CentOS8仓库更新后Axios发送大JSON数据时Laravel后端接收空请求体问题排查

可能的原因及排查方向

根据你描述的情况——小体积JSON请求正常,大体积请求后端就接收空数据,且本地环境完全正常,问题是在CentOS8更新yum仓库后出现的,大概率是服务器端的配置限制导致的,以下是几个最可能的排查方向:

  • Web服务器(如Nginx)的请求体大小限制
    很多时候大请求被截断,都是因为Web服务器默认的请求体上限太小。比如Nginx的client_max_body_size参数,默认通常在1M左右,如果你的JSON数据超过这个阈值,Nginx会直接拒绝接收完整的请求体,后端自然拿到空数据。
    排查方法:打开Nginx的配置文件(比如/etc/nginx/nginx.conf或站点对应的配置文件),查找client_max_body_size,如果存在就调整为更大的值(比如10M或20M),如果不存在就新增这个配置项到http、server或location块中,修改后重启Nginx服务(systemctl restart nginx)。

  • PHP的POST请求大小限制
    Laravel基于PHP运行,PHP配置里有两个关键参数控制POST请求的大小:post_max_size和upload_max_filesize。如果这两个值设置得太小,大体积的POST数据会被PHP直接丢弃,导致后端接收不到内容。
    排查方法:找到你的PHP配置文件(比如/etc/php.ini,不同PHP版本路径可能不同,比如/etc/php/7.4/fpm/php.ini),修改这两个参数的值,示例如下:

    post_max_size = 20M
    upload_max_filesize = 20M
    

    修改完成后重启PHP-FPM服务(systemctl restart php-fpm)。

  • SELinux的拦截限制
    CentOS8默认启用SELinux,系统更新后可能SELinux的安全策略发生了变化,导致大请求被拦截。
    排查方法:可以先临时关闭SELinux测试(执行setenforce 0),再发送大体积请求,如果问题解决了,说明是SELinux的问题。这时候可以选择调整SELinux的策略(比如执行setsebool -P httpd_can_network_connect on等相关规则,具体可以结合系统日志排查),或者修改/etc/selinux/config里的SELINUX值为permissive(设置永久宽松模式)。

  • Laravel自定义中间件的限制
    虽然本地环境正常,但也可以快速排查一下Laravel项目里有没有自定义的中间件对请求体大小做了限制。比如有没有在路由中使用throttle中间件时设置了过小的阈值,或者自己编写了验证请求大小的中间件。这个可能性相对较低,但也可以快速确认排除。

另外,建议你查看服务器的日志来精准定位问题:比如Nginx的错误日志(/var/log/nginx/error.log)、PHP的错误日志(/var/log/php-fpm/error.log)以及Laravel的日志(storage/logs/laravel.log),这些日志里通常会有明确的错误提示,帮助你更快找到问题根源。

内容的提问来源于stack exchange,提问作者Aamir Bashir

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 21:47:39