我正在运行 Apache 2.4 + PHP-FPM 设置。
不过,有一种极端情况,即当使用 Chromelogger 时,此设置会失败。Chromelogger 是一种服务器到客户端调试工具,它通过 HTTP 标头将其数据发送到浏览器。标头的值通常很长,这会导致 mod_proxy_fcgi 失败并出现以下错误:
[proxy_fcgi:error] [pid 10452:tid 1912] [client 127.0.0.1:61175] Premature end of script headers: index.php
[proxy_fcgi:error] [pid 10452:tid 1912] [client 127.0.0.1:61175] AH01070: Error parsing script headers
我尝试增加 Apache 的 LimitRequestFieldSize,但对这个问题没有影响。
我的设置简而言之如下:
httpd.conf:
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
...
<Files ~ "\.(php|phtml)$">
SetHandler "proxy:fcgi://127.0.0.1:9072#"
</Files>
php.ini
cgi.fix_pathinfo=0
附注:当 PHP 作为模块运行时,不会出现此问题,但当 PHP 作为非 FPM FastCGI 运行时,就会出现此问题。
导致错误的标头在 GET 请求中返回。“X-ChromeLogger-Data”的值长度为 18716 个字符。该值本身是一个 base64 编码的 json 对象。
我在 mod_proxy 或 mod_proxy_fcgi 中找不到任何可以增加标头限制的变量。
我遗漏了什么?还有其他 Apache 变量可以在这种情况下提供帮助吗?
谢谢。