Ubuntu 16.04的默认Apache 包中不包含http2,解决方法有2种。
使用PPA源
自行编译mod_http2
方法一,使用ppa源
1 2 3 4 5 |
|
方法二,自行编译mod_http2
配置Apache
创建配置文件
1 2 3 |
|
将mpm模式由prefork改为mpm event模式
注意: HTTP/2在httpd附带的所有多处理模块中都受到支持。但是,如果您使用prefork mpm,将会有严格的限制。在prefork mod_http2中,每次连接只处理一个请求。但是客户端,比如浏览器,会同时发送很多请求。如果其中一个需要很长时间来处理(或者是长轮询),其他请求将会停止。默认情况下,mod_http2不能在这个限制下工作。原因是,如果您运行的处理引擎不是为多线程准备的,那么现在只选择prefork,例如,它将在多个请求中崩溃。
如果您的设置能够处理它,那么现在配置 event mpm是最好的(如果您的平台支持的话)。
PHP默认安装不能工作在Apache MPM Event模式,请参见PHP配置节解决该问题
1 2 |
|
配置网站,在需要启用http2的VirtualHost中增加以下内容。建议在ServerName之后
HTTPS 网站
1
|
|
HTTP 网站
1
|
|
重启apache,注意如需要配置PHP,这里可以先不重启Apache
1
|
|
配置PHP
请根据使用的PHP版本修改命令。
安装PHP-FPM
1
|
|
修改Apache 配置
1 2 3 |
|
重启Apache
1
|
|