升级 HAProxy 到 1.8 以支持 HTTP/2

技术

haproxy.png

HAProxy 终于支持 HTTP/2 了,虽然 nginx 早在一年多年前已经支持,但这晚来的一波终究还是来了。HTTP/2 对于 HTTPS 访问性能的提升我在这里就不再赘述了,网上已经有茫茫多的分析文章,在这里我总结一下它的升级步骤。

如果你是通过软件源来安装 HAProxy,可能更新并没有这么快,比如我正在使用的 Ubuntu 16.04 LTS 目前的版本还停留在 1.6。这时候你就要自己编译来安装了,而 HAProxy 编译起来也是非常的简单,它并没有依赖很多第三方软件库。

截止到这篇文章发布的时候,HAProxy 的最新稳定版是 1.8.1。我们在官网下载源码包后解压

wget http://www.haproxy.org/download/1.8/src/haproxy-1.8.1.tar.gz
tar zxf haproxy-1.8.1.tar.gz
cd haproxy-1.8.1/

接下来直接编译即可

make TARGET=linux2628 USE_PCRE=1 USE_OPENSSL=1 USE_ZLIB=1 USE_CRYPT_H=1 USE_LIBCRYPT=1

由于我在这里启用了一些特殊的库,比如 ZLIB CRYPT 等等,你如果不需要可以去掉这些依赖。编译好以后,在当前目录下就多了一个可执行的 haproxy 源文件了。

你可以直接杀掉原来的进程,用 ./haproxy -f /etc/haproxy/haproxy.cfg 命令来启动新版的 HAProxy 了,也可以修改 /etc/init.d/haproxy 里启动项可执行文件的路径来将它指向新版。

不过在你重新启动服务之前,需要先修改一点配置来使服务器支持 HTTP/2 ,打开 haproxy.cfg,找到 https 证书配置的那一行,比如

bind :443 ssl crt /ssl/my-cert.pem

修改为以下项,以同时支持 HTTP/2 和 HTTP/1.1

bind :443 ssl crt /ssl/my-cert.pem alpn h2,http/1.1

然后再重启服务,用 Chrome 自带的网络监控就可以看到,你的服务器已经自动使用 HTTP/2 来提供服务了。

屏幕快照 2017-12-06 下午12.18.05.png

已有 7 条评论
  1. 通过这个 e4a4a96a69a1b2b530b3bec6734cdf52 过来的

      1. 这么久了,没想到还有搜到。。。

          1. 每一个回复都邮件通知每天会不会有邮件发送最大数量限制,之前做过邮件发送功能(不通过服务器直接发送)数量太大会被服务器拒绝接受的。

  2. 大佬大佬 有QQ或者微信的联系方式么?询问个问题

  3. 老哥,请问一下haproxy要热升级的话有什么好的解决方案吗