如何在Apache和Nginx中启用HTTP/2?
HTTP/2是在2015年发布的HTTP协议的第二个重要版本。
大约有46.5%的网站支持HTTP/2。
它有许多功能,如:
- HTTP头部压缩
- 推送技术
- 通过单个TCP连接并行加载页面元素
- 二进制协议
- 降低延迟
Demo by AKAMAI显示HTTP/2大约比HTTP/1.1快两倍。
你知道吗,LiteSpeed是最早支持HTTP/2的Web服务器之一吗?
如果你使用像Cloudflare、Incapsula、MaxCDN这样的CDN,你可能不需要在你的Web服务器上启用HTTP/2,因为你可以从CDN网络边缘进行操作。
然而,如果你需要在Apache、Nginx、IIS等Web服务器上实现HTTP/2,请继续阅读以了解如何操作。
注意:所有主流浏览器(Chrome、Edge、Firefox、Safari、Opera)必须使用TLS 1.2或更高版本来实现HTTP2。
但是,如果你正在进行一些实验,不用担心,你可以get the TLS certificate for FREE。
在Apache HTTP中实现HTTP/2
Apache HTTP可以在2.4.17或更新版本中通过mod_http2模块进行部署。所以如果你有2.2或更低版本,你首先必须升级到兼容版本。
让我们使用mod_http2和mod_ssl模块编译Apache HTTP。
- 下载最新版本(我将在Linux上使用2.4.25)
- 解压下载的文件,如果你下载的是.gz文件,那么执行以下命令:
gunzip -c httpd-2.4.25.tar.gz | tar xvf -
- 你会看到一个新的文件夹被创建。进入该文件夹
- 使用configure命令从源码构建Apache
备注:如果你在全新的服务器上尝试此操作,可能会遇到安装依赖项的错误,this guide可以帮助你解决此问题。
./configure --enable-ssl --enable-so --enable-http2
- 确保上述命令没有错误,完成后执行以下make命令
make make install
这样就安装了带有HTTP/2模块的Apache HTTP,并且现在是时候进行必要的配置了。
- 备份httpd.conf文件(默认位置为/etc/httpd/conf/httpd.conf)
- 使用vi打开httpd.conf文件,并确保以下内容存在;如果不存在,则添加它。
LoadModule http2_module modules/mod_http2.so
- 接下来,你需要添加以下的Protocols指令
Protocols h2 h2c http/1.1
如果你要为单个虚拟主机启用HTTP/2,你需要在相应的VirtualHost下添加Protocols。
注意:上述Protocols指令有三个参数
- h2 – 指示Apache支持通过SSL/TLS的HTTP/2协议
- h2c – 指示Apache支持通过TCP的HTTP/2
- http/1.1 – 如果客户端不接受HTTP/2,则使用HTTP/1.1来处理请求
重新启动Apache HTTP服务器以重新加载配置。
现在,Apache HTTP实例已经启用支持HTTP/2协议。
在Nginx中实现HTTP/2
Nginx1.9.5或更高版本支持HTTP/2,所以首先你必须确保你安装了兼容的版本。
在Nginx中启用HTTP/2只需要在listen指令中添加http2参数。
- 像往常一样,备份nginx.conf文件(默认位置为/etc/nginx/nginx.conf)
- 使用vi修改文件,并在listen指令下添加http2
server { listen 443 http2 ssl chandan.io; ….... }
如我上面提到的,HTTP/2仅支持HTTPS,所以你必须添加在具有SSL配置的server块下。
如果您的SSL配置在nginx.conf以外的文件中,您必须在那里进行更新。
完成后,重新启动Nginx以激活配置。
验证网站是否支持HTTP/2
有多种方法可以检查网站是否支持HTTP/2。
手动 – 打开IE/Chrome/Firefox,按F12 >> 转到网络选项卡,您应该看到协议为HTTP/2。
在线 – 您可以使用HTTP/2 Test tool。
以上就是今天的内容。我希望以上内容能帮助您在Apache和Nginx Web服务器中启用HTTP/2协议,以供fast-loading web pages使用。