我正在设置一个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
这不是很好的解释,但希望能帮助你更好地理解。