修复Magento2 Nginx报错:upstream sent too big header while reading response header from upstream
刚刚在ubuntu18.04环境中安装完Magento2,访问产品页的时候,突然爆了一个错,Nginx 502错误,查看日志发现:upstream sent too big header while reading response header from upstream, client: 127.0.0.1, server:。。。。。。
究其原因,因为Nginx默认接受的header请求头设置较小,而Magento如此巨型的系统架构,请求头非常大,Nginx处理不来就会爆502错误,那怎么办?
fastcgi_buffer_size 128k;
fastcgi_buffers 4 256k;
fastcgi_busy_buffers_size 256k;
fastcgi_buffer_size用于指定读取FastCGI应答第一部分需要用多大的缓冲区,这个值表示将使用1个64KB的缓冲区读取应答的第一部分(应答头),可以设置为fastcgi_buffers选项指定的缓冲区大小。
fastcgi_buffers指定本地需要用多少和多大的缓冲区来缓冲FastCGI的应答请求。如果一个PHP脚本所产生的页面大小为256KB,那么会为其分配4个64KB的缓冲区来缓存;如果页面大小大于256KB,那么大于256KB的部分会缓存到fastcgi_temp指定的路径中,但是这并不是好方法,因为内存中的数据处理速度要快于硬盘。一般这个值应该为站点中PHP脚本所产生的页面大小的中间值,如果站点大部分脚本所产生的页面大小为256KB,那么可以把这个值设置为“16 16k”、“4 64k”等。
fastcgi_busy_buffers_size的默认值是fastcgi_buffers的两倍。
fastcgi_* 是在nginx接受客户端请求时的响应使用的,此时适当增加Buffer的大小来响应请求头,可以避免上述问题的出现。