如何解决上游从上游读取响应头发送太大的头?

我在我的日志中有这个错误:

当从上游读取响应报头时,上游发送太大的报头

我试图补充

proxy_buffer_size 128k; proxy_buffers 4 256k; proxy_busy_buffers_size 256k; 

到我的nginx.conf http块但没有工作

我也尝试添加

 fastcgi_buffer_size 128k; fastcgi_buffers 4 256k; fastcgi_busy_buffers_size 256k; 

到我的conf文件,但我找不到任何位置〜.php $ {

所以我想知道我怎么能过来这个错误? join

 fastcgi_buffer_size 128k; fastcgi_buffers 4 256k; fastcgi_busy_buffers_size 256k; 

到一个手工制作的php块给了我nginx:[emerg]在/etc/nginx/nginx.conf中的未知指令“location”:6

通常这个参数修复“上游发送太大头”的问题,你不需要巨大的价值:)他们设置为http或服务器块,而不是位置。

 server { ... fastcgi_buffers 16 16k; fastcgi_buffer_size 32k; } 

有时Firefox的FirePHP会创建大的标题,尝试暂时禁用它。

upstream sent too big header while reading response header from upstream是nginx的一般说法:“我不喜欢我所看到的”

  1. 您的上游服务器线程崩溃
  2. 上游服务器发回一个无效的头
  3. 从STDERR发回的通知/警告打破了缓冲区,它和STDOUT都关闭了

3:查看消息上方的错误日志,是否在消息前面记录了流? PHP message: PHP Notice: Undefined index:来自循环的示例代码片段我的日志文件:

 2015/11/23 10:30:02 [error] 32451#0: *580927 FastCGI sent in stderr: "PHP message: PHP Notice: Undefined index: Firstname in /srv/www/classes/data_convert.php on line 1090 PHP message: PHP Notice: Undefined index: Lastname in /srv/www/classes/data_convert.php on line 1090 ... // 20 lines of same PHP message: PHP Notice: Undefined index: Firstname in /srv/www/classes/data_convert.php on line 1090 PHP message: PHP Notice: Undefined index: Lastname in /srv/www/classes/data_convert.php on line 1090 PHP message: PHP Notice: 2015/11/23 10:30:02 [error] 32451#0: *580927 FastCGI sent in stderr: "ta_convert.php on line 1090 PHP message: PHP Notice: Undefined index: Firstname 

你可以在第三行(从之前的20个错误)中看到缓冲区限制被打破,并且下一个线程在它上面写入。 然后Nginx关闭连接并返回502给客户端。

2:记录每个请求发送的所有头文件,检查它们并确保它们符合标准(nginx不允许超过24小时的任何内容删除/失效一个cookie,发送无效的内容长度,因为在计算内容之前缓冲了错误消息。 ..)

例子包括:

 <?php //expire cookie setcookie ( 'bookmark', '', strtotime('2012-01-01 00:00:00') ); // nginx will refuse this header response, too far past to accept .... ?> 

和这个:

 <?php header('Content-type: image/jpg'); ?> <?php //a space was injected into the output above this line header('Content-length: ' . filesize('image.jpg') ); echo file_get_contents('image.jpg'); // error! the response is now 1-byte longer than header!! ?> 

1:验证或创建一个脚本日志,以确保您的线程到达正确的终点,并在完成之前不退出。