基于最近对HTTP/2的争论和它的优势,是时候升级底层架构了。这篇文章将会介绍如何在安装和配置HAProxy和Ngnix(使用ssl终端)。为了简化流程,我建议你准备好使用Docker镜像。
如果你想跳过安装环节或你只对配置环节感兴趣,可以跳至配置部分。 |
我为什么需要关注HTTP/2?这里有一些介绍HTTP/2益处的文章-而且我鼓励你去读一读。下面我将重点介绍我认为比较重要的几点。 HTTP/2的主要优势:
|
今天我可以使用它吗?
|
你需要做的: 1.站点能跑通SSL。如果你还没有虚拟证书的话,你需要使用虚拟证书(简单)。 2.Ngnix 1.9.5 或更新版本( 简单 )。 3. 安装配置好OpenSSL的HAPorxy 1.6或更新版( 需要一些技巧 )。 4.良好的HAPRoxy和Ngnix配置( 简单 )。 5.确认你是否已经在使用HTTP/2,HTTP/2 and SPDY indicator 对Chrome友好。 OpenSSL部分是需要一些技巧,因为大部分有OpwnSSL 1.0.1(或者更旧的版本)的Linux分支都不支持ALPN(应用层协议协商)。ALPN协议允许应用层去协商,这个协议将被用在连接中,而且这是基本的,如果我们要在相同的TCP端口支持HTTP/2和HTTP/1。除此之外,HTTP/2在HAProxy中只支持使用ALPN,所以它一定会在我们的列表里。 如果你对安装流程熟悉的话,请直接跳至配置部分. |
1.获取 SSL 证书你可以很便宜的从ssl2buy.com上买到信任证书,那里有许多靠谱发行机构的代售。我曾经在那里买了一堆证书而且我推荐他们的服务和客户支持。你可以从那里拿到低于20美元的AphaSSL证书。 如果你需要为HAProxy或Nginx生成虚拟证书,你可以使用下面的命令:
我们需要在下一步的配置中使用生成的证书和秘钥。 |
2.Nginx 安装
|
3. OpenSSL 和 HAProxy 安装
|
1
|
haproxy -vv |
|
让我们用nginx下列虚拟主机配置(如上所述): 这一行:listen 81 default_server http2 proxy_protocol; 定义了服务器在端口81,会处理HTTP/2的请求。请注意,我们无法在服务器使用443端口进行SSL连接:SSL连接已经被HAProxy解密过了,所以现在我们有一个非加密连接。因此我们需要限制服务器的81端口只使用HTTP/2,不使用SSL。 题外话:小也有proxy_protocol关键词。在haproxy.cfg等效发送代理,在后端服务器配置。代理协议是独立出来的,这儿有篇文章很好的解释了原因。简而言之,它允许通过HAProxy后端服务器传送客户端的IP地址和端口号,这通常是非常理想的。 你可以使用上面的配置运行HAProxy:
现在你应该能够连接到您的代理主机(例如https://localhost:443/),看到它正在运行HTTP / 2。如果你在Firefox的测试,检查网络请求头的标题,你会看到X-Firefox-Spdy: "h2"。 |
Docker images如果你早已经会使用Docker,你可以用我们的MILLION12镜像。当Docker还是1.0版本的时候我们已经开始使用Docker很长时间了(MILLION12这是我们的仓库地址),而且我们已经构建了一堆有用的镜像 。在这个例子里,我们将使用million12/haproxy和million12/nginx 这两个镜像。里面的配置是我们讨论后的最终结果。 你可以运行整个栈通过使用docker-compose.yml文件。注意我们是通过haproxy容器里的web.server主机名连接Nignx的,那个域名就是当前haproxy.cfg使用的主机名。 连接https://haproxy:8443你就会看到屏幕显示出如下内容(注意蓝色的HTTP/2提示部分)。
|
如果你想看看使用这些Docker镜像和上述配置的真实的产品工程,打开https://PrototypeBrewery.io。Prototype Brewery是我们的产品,一个计划和构建交互式web项目的原型工具。打开看看吧,我们已经在使用HTTP/2了(别忘了注册)。 总结正如你看到的,迁移到HTTP/2真的很简单,你今天就能做掉。 没有什么理由让你再等下去了,主流浏览器都已经支持它了。而且即使回迁到HTTP/1.1上你仍然是安全的。 如果你认为我在这里漏写了什么,或者还有什么可以改进的,请在下面留言评论。 |
本文转自:开源中国社区 [http://www.oschina.net]
本文标题:HAProxy、Nginx 配置 HTTP/2 完整指南
本文地址:http://www.oschina.net/translate/haproxy-nginx-http-2
参与翻译:起什么name呢, 无若, 雪落无痕xdj
英文原文:The complete guide to HTTP/2 with HAProxy and Nginx