如何在 Nginx 中启用 HTTP 2.0?

linuxoperating systemopen source

HTTP/2 是 HTTP 协议的最新版本,旨在提升网站性能和安全性。Nginx 是一款支持 HTTP/2 的热门 Web 服务器。如果您正在使用 Nginx 并希望为您的网站启用 HTTP/2,本文将指导您完成整个过程。

步骤 1:检查 Nginx 版本

在启用 HTTP/2 之前,您应该检查系统上安装的 Nginx 版本。为此,请运行以下命令 -

nginx -v

此命令将显示系统上安装的 Nginx 版本。如果您的 Nginx 版本为 1.9.5 或更高版本,则可以启用 HTTP/2。如果您的 Nginx 版本低于 1.9.5,则需要升级到较新版本。

步骤 2:启用 SSL/TLS

要启用 HTTP/2,您必须首先在您的网站上启用 SSL/TLS。HTTP/2 需要使用 SSL/TLS 加密,以便在 Web 服务器和客户端浏览器之间建立安全连接。

要启用 SSL/TLS,您需要 SSL/TLS 证书。您可以从受信任的证书颁发机构 (CA) 获取证书,也可以创建自签名证书用于测试。

假设您拥有 SSL/TLS 证书,则可以将以下行添加到您的 Nginx 配置文件中 -

server {
   listen 443 ssl http2;
   server_name example.com;
   ssl_certificate /path/to/ssl/certificate;
   ssl_certificate_key /path/to/ssl/private/key;
   ...
}

此配置指示 Nginx 使用 SSL/TLS 和 HTTP/2 协议监听 443 端口(默认 HTTPS 端口)。ssl_certificate 和 ssl_certificate_key 指令分别指定 SSL/TLS 证书和私钥的路径。请将 example.com 替换为您的域名。

步骤 3:测试配置并重启 Nginx

更新 Nginx 配置文件后,您应该测试配置以确保没有错误。为此,请运行以下命令 -

nginx -t

如果配置有效,您应该会看到一条消息,表明语法正确且测试成功。

最后,重新启动 Nginx 以应用更改 -

sudo service nginx restart

步骤 4:验证 HTTP/2 是否已启用

要验证您的网站是否已启用 HTTP/2,您可以使用浏览器开发者工具,例如 Google Chrome DevTools。打开 DevTools,转到"网络"选项卡,然后从您的网站加载一个页面。在"协议"列中,您应该看到"h2"而不是"http/1.1",这表明该页面正在使用 HTTP/2 加载。

除了上述步骤外,在 Nginx 中启用 HTTP/2 时还需要注意以下几点:

为所有服务器块启用 HTTP/2

如果您的 Nginx 配置文件中有多个服务器块,则应为所有服务器块启用 HTTP/2,以确保您的整个网站都能从 HTTP/2 的性能提升中受益。为此,只需在每个服务器块的 listen 指令中添加 http2 参数即可。

针对 HTTP/2 优化您的网站

虽然 HTTP/2 比 HTTP/1 提供了许多性能优势,但需要注意的是,并非所有网站都能获得相同的性能提升。为了充分利用 HTTP/2,您应该通过以下方式针对新协议优化您的网站:-

  • 最大限度地减少加载页面所需的请求数量

  • 减小资源(例如图片、CSS 和 JavaScript 文件)的大小

  • 使用服务器推送预加载后续页面所需的资源

  • 为所有资源启用 gzip 压缩

  • 使用内容分发网络 (CDN) 缓存和提供静态资源

  • 监控您网站的性能

启用 HTTP/2 后,监控您网站的性能非常重要,以确保它确实受益于新协议。您可以使用 Google PageSpeed Insights、WebPageTest 或 Pingdom 等工具来测量您网站的加载速度并找出需要改进的地方。

考虑使用第三方 HTTP/2 加速服务

如果您使用的是共享主机环境或无法控制服务器配置,可以考虑使用第三方 HTTP/2 加速服务,例如 Cloudflare 或 Akamai。这些服务可以通过优化资源、降低延迟和提供额外的安全功能来提升您网站的性能。

使用最新版本的 OpenSSL

Nginx 依赖 OpenSSL 实现 SSL/TLS 加密和 HTTP/2 支持。为了获得最佳性能和安全性,请确保您使用的是最新版本的 OpenSSL。您可以通过运行以下命令检查您的 OpenSSL 版本 -

openssl 版本

如果您的 OpenSSL 版本过旧,您可以使用软件包管理器或从源代码编译进行升级。

使用 HTTP/2 服务器推送功能

HTTP/2 包含一项名为服务器推送的新功能,该功能允许服务器在客户端请求之前向客户端发送额外资源。这可以显著减少加载页面所需的往返次数并提高性能。要在 Nginx 中启用服务器推送,您可以使用 http2_push 指令。例如,要使用 URL /styles.css 推送 CSS 文件,您可以在 Nginx 配置文件中添加以下行 -

http2_push /styles.css;

监控服务器的资源使用情况

启用 HTTP/2 会增加服务器的资源使用率,尤其是在您的网站流量较大的情况下。请务必监控服务器的 CPU、内存和网络使用情况,以确保其能够处理增加的负载。您可以使用 top、htop 或 sar 等工具来监控服务器的资源使用情况。

仅为静态内容启用 HTTP/2

仅为动态内容(例如 PHP 脚本或数据库查询)启用 HTTP/2 可能不会带来显著的性能提升。为了最大限度地发挥 HTTP/2 的性能优势,您应该仅为静态内容(例如图像、CSS 和 JavaScript 文件)启用它。您可以使用 Nginx 配置文件中的 map 指令,根据请求 URL 选择性地启用 HTTP/2。例如,要为带有 .css 文件扩展名的请求启用 HTTP/2,您可以在配置文件中添加以下几行 -

map $request_uri $http2_enabled {
   ~*\.css$ 1;
   default 0;
}

server {
   listen 443 ssl http2;
   ...
   if ($http2_enabled) {
      http2_push /styles.css;
   }
   ...
}

在 Nginx 中启用 HTTP/2 可以显著提升您的网站性能。然而,重要的是要针对新协议优化您的网站,监控服务器的资源使用情况,并选择性地仅为静态内容启用 HTTP/2。遵循这些技巧,您可以确保您的网站为访问者提供快速安全的用户体验。

在所有支持的浏览器上启用 HTTP/2

虽然大多数现代 Web 浏览器都支持 HTTP/2,但某些旧版浏览器不支持新协议。为了确保所有访问者都能访问您的网站,您应该仅为支持 HTTP/2 的浏览器启用它。您可以在 Nginx 配置文件中使用 if 指令来检测客户端的浏览器,并仅在支持 HTTP/2 的情况下启用它。例如,要仅为 Google Chrome 和 Mozilla Firefox 启用 HTTP/2,您可以在配置文件中添加以下行 -

map $http_user_agent $http2_enabled {
   default 0;
   ~*Chrome|Firefox 1;
}

server {
   listen 443 ssl;
   if ($http2_enabled) {
      listen 443 ssl http2;
   }
   ...
}

启用服务器端缓存

HTTP/2 可以显著减少加载页面所需的请求数量,但这并不能消除缓存的必要性。通过启用服务器端缓存,您可以减轻服务器负载并进一步提升性能。您可以使用 Nginx 配置文件中的 proxy_cache 指令来启用动态内容的缓存。例如,要启用 .php 文件扩展名的请求的缓存,您可以在配置文件中添加以下行 -

server {
   ...
   location ~ \.php$ {
      proxy_cache_valid 200 5m;
      ...
   }
   ...
}

结论

在 Nginx 中启用 HTTP/2 非常简单。您需要检查 Nginx 版本、启用 SSL/TLS、更新 Nginx 配置文件、测试配置,然后重启 Nginx。启用 HTTP/2 后,您的网站将受益于更快的页面加载速度、更佳的性能和更佳的安全性。


相关文章


有用资源