upstream sent too big header while reading response header from upstream
是nginx通用的表达方式,表示"我不喜欢我看到的东西"
- 您的上游服务器线程崩溃了
- 上游服务器返回了一个无效头部
- 从标准错误输出(STDERR)返回的通知/警告破坏了缓冲区,同时也关闭了它和标准输出(STDOUT)
3: 查看上面消息之上的错误日志,是否存在伴随着该消息的日志行?例如,以下是来自我的日志文件的循环片段:
2015/11/23 10:30:02 [error] 32451
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
PHP message: PHP Notice: Undefined index: Firstname
在之前的20个错误中的第3行,您可以看到缓冲区限制已达到,并且下一个线程写入了它。然后Nginx关闭连接并向客户端返回502。
2:记录每个请求发送的所有标头,审查它们并确保它们符合标准(nginx不允许任何早于24小时的内容删除/过期cookie,因为错误消息被缓冲在内容计数之前而发送无效的内容长度...)
例如:
<?php
setcookie ( 'bookmark', '', strtotime('2012-01-01 00:00:00') );
....
?>
还有这个:
<?php
header('Content-type: image/jpg');
?>
<?php
header('Content-length: ' . filesize('image.jpg') );
echo file_get_contents('image.jpg');
?>
1:验证或记录脚本,确保您的线程到达正确的终点并在完成之前不退出。