全站升级HTTP2


发布于

|

分类

终于吃到了心心念念 HTTP/2。速度有没有快一些呢?

去年就看到Apache支持HTTP2了,但由于没有默认包含在源里面,需要自己编译Apache,所以一直没有进行升级。今天突然想起来这件事儿了,就顺手把它搞定吧。

Apache版本

需要2.4.24以上才行。Ubuntu18.04/Debian9默认带的Apache 都满足要求。

启用mod_http2

没错,一句话搞定的:

sudo a2enmod http2

告诉各个virtualhost使用h2

在virtualhost文件里面加上这句话:

Protocols h2 h2c http/1.1

这句话的意思是,“优先使用h2协议,不能用的话降级为h2c协议试试,实在不行http1.1你总支持吧?”

然后重启apache。

改用FastCGI

按照上面的做法,理论上就应该能启用h2了啊,但是浏览器f12观察死活都是http1.1。但是好像请求头里面多了一个update什么东西。

仔细找原因……mod_php不支持h2……只有factcgi支持。那好,我们换!

sudo apt install php-fpm 
sudo a2enmod proxy_fcgi setenvif
sudo a2enconf php7.2-fpm 
sudo a2dismod php7.2
sudo service apache2 restart

注意,上面的7.2可能需要替换为你的PHP的版本,例如7.0。Ubuntu16.04默认是7.0,Debian9默认是7.1,Ubuntu18.04默认是7.2。

如果restart出错,那么按照错误信息检查一下是不是一些php_value导致的。临时禁用一下。下面再说怎么开启。

使用”event”模式

同上,也是因为“prefork”模式不能完全兼容h2导致的。这个可以看log: 如果我们不换用event,那么apache启动log里面会说“prefork不能完全支持h2。如需开启h2,请使用event模式”。

sudo a2dismod mpm_prefork 
sudo a2enmod mpm_event 
sudo service apache2 restart 
sudo service php7.2-fpm restart

php_value

上回书说道,使用php_valuephp_admin_value会导致出错。但是这个东西确实很有用,比如设置个open_base_dir什么的。

直接写php_admin_value XXXXX XXXXXXmod_php的写法,但是这个模块已经被我们禁用了。那么在php_fpm里面怎么设置php_admin_value呢?

多方Google,最后得到一句这样的话:

SetEnv PHP_ADMIN_VALUE "open_basedir=/var/www/html/:/tmp/:/proc/:/dev/urandom"

照葫芦画瓢改一下把其他php_admin_value改一下就好了。

然后再配置个ssl证书,就完美了。

参考资料


评论

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注