使用Apache2 + PHP 7.0提供并发请求FPM适用于curl但不适用于Firefox或Chromium

时间:2018-02-02 14:00:57

标签: php apache apache2 fastcgi

我的机器运行Debian 9,使用Apache 2.4.25和PHP 7.0 FPM通过proxy_fcgi_module来运行php文件。

这是我使用Apache的php-fpm的配置:

<IfModule !mod_php7.c>
<IfModule proxy_fcgi_module>
<IfModule setenvif_module>
SetEnvIfNoCase ^Authorization$ "(.+)" HTTP_AUTHORIZATION=$1
</IfModule>

<FilesMatch ".+\.ph(p[3457]?|t|tml)$">
    SetHandler "proxy:unix:/run/php/php7.0-fpm.sock|fcgi://localhost"
</FilesMatch>
<FilesMatch ".+\.phps$">
    # Deny access to raw php sources by default
    # To re-enable it's recommended to enable access to the files
    # only in specific virtual host or directory
    Require all denied
</FilesMatch>
# Deny access to files without filename (e.g. '.php')
<FilesMatch "^\.ph(p[3457]?|t|tml|ps)$">
    Require all denied
</FilesMatch>

这几个月都运行良好,但现在我偶然发现了以下两个php脚本的问题:

第一个脚本:

<?php
sleep(30);
echo "test 1\n";
?>

第二个脚本:

<?php
echo "test 2\n";
?>

我通过Firefox打开第一个脚本的URL,然后直接在第二个标签页面中打开秒脚本的URL。

会发生什么: 第二个脚本在第一个脚本完成加载后等待并加载。

我期待发生的事情: 第二个标签应立即加载。

我也注意到了一些有趣的事情:如果我通过curl调用这两个脚本,那么会立即加载。

我测试了最新版本的Firefox(58.0.1),Chromium(64.0.3282.119)和curl(7.58.0)。

更新

这似乎与HTTP2有关。如果我通过about:config with:

在Firefox中禁用HTTP2
network.http.spdy.enabled.http2 = false

它有效。

0 个答案:

没有答案