Angular请求PHP服务器遇CORS及404问题求助(EC2+Nginx环境)
问题解决:Nginx返回404但PHP已执行,日志报
upstream sent too big header 核心问题分析
从你提供的日志可以定位两个关键问题:
upstream sent too big header:Nginx默认的FastCGI缓冲区容量不足以容纳PHP返回的响应头,导致Nginx无法正常接收PHP-FPM的响应,触发5xx级错误。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
相关产品推荐
相关产品推荐

