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

Angular请求PHP服务器遇CORS及404问题求助(EC2+Nginx环境)

问题解决:Nginx返回404但PHP已执行,日志报upstream sent too big header

核心问题分析

从你提供的日志可以定位两个关键问题:

  1. upstream sent too big header:Nginx默认的FastCGI缓冲区容量不足以容纳PHP返回的响应头,导致Nginx无法正常接收PHP-FPM的响应,触发5xx级错误。
  2. 50x.html文件找不到:Nginx触发5xx错误后,尝试加载配置中指定的错误页面,但文件路径不匹配(配置root为/var/www/angular/dist/testenpoint-website-angular/,但日志中查找的是my-website-angular目录),找不到文件后最终返回404给客户端——而实际上PHP代码已经完整执行。

解决方案

1. 调整FastCGI缓冲区大小,解决头部溢出问题

在你的location /applicationApis/块中添加缓冲区配置,增大Nginx接收上游响应头的容量:

location /applicationApis/ {
  root /var/www/html;
  try_files $uri $uri/ =404;
  include fastcgi_params;
  fastcgi_pass unix:/run/php-fpm/www.sock;
  fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
  # 新增缓冲区配置
  fastcgi_buffers 32 32k;
  fastcgi_buffer_size 64k;
  fastcgi_busy_buffers_size 64k;
}
  • 若仍报错,可以继续增大数值(比如调整为64 64k和128k);
  • 测试实例正常的原因大概率是已经配置了足够的缓冲区,可对比测试环境的配置确认。

2. 修复50x.html错误页面路径

有两种可选方式:

  • 方式一:确保错误页面存在于正确路径
    在/var/www/angular/dist/testenpoint-website-angular/目录下创建50x.html文件(内容自定义即可)。
  • 方式二:指定错误页面绝对路径
    修改server块中的error_page配置,直接指向正确路径,避免依赖root:
    error_page 500 502 503 504 /var/www/html/50x.html;
    location = /50x.html {
        root /var/www/html;
    }
    

3. 验证配置并重启Nginx

修改完成后先验证配置合法性:

nginx -t

若提示test is successful,重启Nginx使配置生效:

systemctl restart nginx

额外检查点

  • 对比测试实例的Nginx配置,确认测试环境是否已经包含上述FastCGI缓冲区配置,这是环境差异的核心点;
  • 若filterObject参数内容过大,可顺带检查PHP的output_buffering配置,但从日志来看核心问题仍在Nginx缓冲区。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 17:05:59