Ubuntu 17.04 上的 HTTP2 无法正常工作

Ubuntu 17.04 上的 HTTP2 无法正常工作

我在我的电脑上安装了 Ubuntu 17.04,并使用 PHP 7 设置了 Apache 来进行一些开发,但是当我尝试在我的 Apache 上设置 HTTP2 时,它不起作用,因为它没有为运行 mpm-prefork 的 Apache 设置,并且我无法禁用 mpm-prefork 因为它被 PHP 7 使用,有什么想法可以让它工作吗?

谢谢。

答案1

即使没有 HTTP/2,prefork 模型也会对 HTTP 施加相当多的限制,但有了 HTTP/2,它就会阻止使用 HTTP/2 的许多功能。由于每个请求都发生在单独的进程中,并且没有多线程,因此 Apache 无法对它们进行多路复用(在同一个 TCP 连接上处理多个请求),除非它大幅改变 prefork 的工作方式,但它选择不这样做。因此,使用 prefork 时,HTTP/2 支持仅限于每个连接一次一个请求。

这里有记录

将 PHP 与 Web 服务器集成的一种现代好方法是使用 PHP-FPM(PHP 的内置 FastCGI 进程管理器),并让 Web 服务器将 PHP 请求转发给它,并接收它们的响应。然后,您可以使用多线程 Web 服务器(如带有 worker MPM 的 Apache),或基于事件的 Web 服务器(如带有事件 MPM 的 Apache),或 nginx(它特别擅长 HTTP/2,因为它能够以很少的内存保持数千个连接的开放)。事实上,这可能是将 PHP 与 nginx 结合使用的最常见方式,而且我之前也见过出于安全原因在 Apache2 上使用它(例如,让不同的 PHP 应用程序以不同的用户身份运行)。支持 HTTP/2 似乎也是一个不错的理由。

有许多关于设置 Web 服务器和 PHP 以使用 PHP-FPM 的指南。

相关内容