Nginx 502坏的网关。 通过增加缓冲区来解决。 为什么?

我正在设置一个LEMP栈来运行Drupal。 我安装了Nginx和PHP-FastCGI。

Nginx的工作正常,但任何尝试运行PHP给了我错误“502错误的网关”。

一个快速的谷歌透露: nginx 502坏的网关 ,并增加缓冲区大小解决了这个问题。

fastcgi_buffers 8 16k; fastcgi_buffer_size 32k; 

问题是为什么?

我的理解

从前面的链接看来,nginx似乎向PHP-FastCGI发送请求,并且没有响应。 这些请求是什么让它超时?

有没有足够的时间来回应,因为PHP是复杂的(它不是,这是phpinfo(); )。 现在我已经增加了缓冲区,何时应该担心再次增加缓冲区?

这不难理解。

如果你将检查nginx错误日志,很可能你会看到这样的消息:
upstream sent too big header while reading response header from upstream

fastcgi_buffers设置用于FastCGI上行响应的缓冲区段的数量和内存大小。

默认值,在文档中显示:
fastcgi_buffers 8 4k|8k;
默认缓冲区大小等于操作系统的PAGESIZE。
getconf PAGESIZE允许获取当前的内存页面大小。

例如,在Ubuntu 14.01中,默认的PAGESIZE是4KB。 这意味着,你有8个部分,每个4KB。 总计是32KB。 FastCGI的响应超过这个数字,这就是为什么我们得到响应代码502 - server received

这不是很好的解释,但希望能帮助你更好地理解。