如何修复 nginx FastCGI 错误 'upstream sent too big header while reading response header from upstream'

问题:

你在 nginx + FastCGI (PHP) 设置中遇到 502 Bad gateway 错误。你看到类似这样的错误消息

nginx_error_log_snippet.txt
2020/01/28 11:58:19 [error] 9728#9728: *1 upstream sent too big header while reading response header from upstream, client: 2001:16b8:2681:7600:bc28:b49d:3318:e9c4, server: techoverflow.net, request: "GET /category/calculators/ HTTP/2.0", upstream: "fastcgi://unix:/var/run/php/php7.2-fpm.sock:", host: "techoverflow.net", referrer: "https://techoverflow.net/?s=calcul"

在你的错误日志中。

解决方案

你需要通过添加以下内容来增加 FastCGI 缓冲区

fastcgi_buffer_settings.conf
fastcgi_buffers 32 256k;
fastcgi_buffer_size 512k;

在你的 nginx 配置中每个 fastcgi_pass 实例旁边,然后重启 nginx

restart_nginx.sh
sudo service nginx restart

注意此示例中列出的缓冲区大小值只是建议,可能需要根据你的需求向上或向下调整 - 但是,这些值通常适用于现代服务器硬件(尽管许多管理员倾向于使用较小的缓冲区)。


Check out similar posts by category: Nginx