我最近在AWS中inheritance了超过2个Nginx框的pipe理,而且对PHP-FPM的工作方式(而且还没有工作)非常不熟悉。 我最近集成了Keen.IO,用于后端用户日志logging,使用:
fastcgi_finish_request();
在PHP中完成请求,然后继续login到Keen。 这似乎是工作良好,除了一些更高的延迟,我假设用户没有经历,因为他们已经断开。
然而,今天,随着stream量的build立,我们开始收到502网关错误,并且两台服务器都有以下错误:
[error] 2356#0: *70245 upstream sent unexpected FastCGI record: 3 while reading response header from upstream, client: (ADDRESS), server: igun-api-slaves.crimson-moon.com, request: "GET (Address)", upstream: "fastcgi://unix:/var/run/php-fpm/product1.socket:", host: "ADDRESS"
这发生在我们所有的页面上,而不仅仅是我用日志修改的页面。 我完全失去了,因为这对我来说都是新的。 这个错误究竟意味着什么?
– 编辑
我现在在AWS云中看到,自编写代码以来,错误一直存在,而不仅仅是当stream量build立时。
日志消息意味着PHP-FPM正在发送一个nginx不理解的loggingtypesID。 事实certificate,正如您可能已经猜到的那样,loggingtypes3对应于FCGI_END_REQUEST。 因此,似乎nginx的FCGI支持是不完整的,因为它不能识别并正确处理这种loggingtypes。
我build议要么打开你的编辑器并修补nginx,要么停止调用fastcgi_finish_request() ,并找出其他方法来实现你想要做的事情。
这个错误似乎是由PHP中的一个错误引起的,它不能正确处理fastcgi_finish_request()
https://bugs.php.net/bug.php?id=67583
这可以通过在Ngynx设置中closuresfastcgi_keep_conn来修补。