如何在 Nginx 中启用 HTTP 2.0?
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 后,您的网站将受益于更快的页面加载速度、更佳的性能和更佳的安全性。
相关文章
有用资源
linux 参考教程 - 该教程包含有关 linux 的更多信息:https://www.cainiaomax.com/linux/

