通过 Nginx 让网站支持 HTTP/2

https://www.nginx.com/blog/http2-module-nginx/

目前,HTTP 的主流版本是 1.1。它是 1997 年发布的。站点使用 Nginx 作为 Web 服务器,让它支持 HTTP/2 是非常简单的。

只需要在 Nginx 的配置文件中(一般位于 /etc/nginx/nginx.conf )的对应位置添加 http2 即可。

但是,在此之前,需检查 Nginx 是否支持 http2,并且 Openssh 的版本是否达到最低要求(>=1.0.2)。

1
2
nginx -V
... --with-http_v2_module

如果能在输出中找到 --with-http_v2_module 就说明当前版本 Nginx 支持开启 HTTP/2。

具体操作如下:

http {
  server {
    listen 443 ssl http2;
  }
}

修改完成后,执行 sudo systemctl restart nginx 来重启 Nginx。

如何检查网站是否支持 HTTP/2?

可以通过开发者工具,对于 Firefox 可通过 F12 打开,在 Network 标签页下面,可以看到由 Status、Method、Domain 等组成的列表,其中有一项为 Protocol,如果修改成功,这一栏的值会由 HTTP/1.1 变为 HTTP/2。

再后来,我把博客域名改为 www.yidajiabei.xyz 。我查看域名是否是 HTTP/2 协议时,发现它改变了:变成 HTTP/1.1 或者是 HTTP1.1 + h2 。当协议是 HTTP/1.1 我看到 Transferred 那一栏是 service worker ,也就是说:从目标服务器直接获取,协议是 HTTP/2,经过缓存则变为 HTTP/1.1。那么问题来了?缓存为什么能够改变协议呢?还有一个问题,为什么缓存里不能有 HTTP/2呢?

Layout of comment panels