插件窝 干货文章 Nginx HTTP2配置教程,提升网站访问速度

Nginx HTTP2配置教程,提升网站访问速度

HTTP 配置 Nginx SSL 800    来源:    2025-04-16

Nginx HTTP/2 配置教程:提升网站访问速度

HTTP/2 是 HTTP 协议的重大升级,能显著提高网站性能。本教程将指导您如何在 Nginx 中配置 HTTP/2。

前提条件

  1. Nginx 1.9.5 或更高版本
  2. OpenSSL 1.0.2 或更高版本(推荐使用 OpenSSL 1.1.1+)
  3. 有效的 SSL 证书(HTTP/2 需要 HTTPS)

配置步骤

1. 检查 Nginx 版本和支持情况

nginx -v
nginx -V  # 查看编译参数,确认包含 --with-http_v2_module

2. 修改 Nginx 配置文件

编辑您的站点配置文件(通常在 /etc/nginx/sites-available/your_site/etc/nginx/conf.d/your_site.conf):

server {
    listen 443 ssl http2;  # 关键:添加 http2 参数
    listen [::]:443 ssl http2;

    server_name yourdomain.com;

    # SSL 配置
    ssl_certificate /path/to/your/certificate.crt;
    ssl_certificate_key /path/to/your/private.key;

    # 推荐的安全配置
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384';
    ssl_prefer_server_ciphers on;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;

    # 其他配置...
}

3. 优化 HTTP/2 性能

添加以下优化配置:

# 启用 HTTP/2 服务器推送(可选)
http2_push_preload on;

# 调整缓冲区大小
http2_recv_buffer_size 128k;
http2_max_concurrent_streams 128;
http2_max_field_size 16k;
http2_max_header_size 32k;

# 启用 gzip 压缩(与 HTTP/2 兼容)
gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

4. 重定向 HTTP 到 HTTPS

server {
    listen 80;
    listen [::]:80;
    server_name yourdomain.com;
    return 301 https://$host$request_uri;
}

5. 测试并重新加载配置

nginx -t  # 测试配置语法
systemctl reload nginx  # 重新加载配置

验证 HTTP/2 是否生效

  1. 使用浏览器开发者工具

    • 在 Chrome/Firefox 中打开开发者工具 (F12)
    • 转到 Network 标签页
    • 刷新页面,查看协议列,应该显示 "h2"
  2. 使用命令行工具

    curl -I --http2 https://yourdomain.com
    

    应该看到 HTTP/2 200 的响应

  3. 在线检测工具

高级优化建议

  1. 启用 OCSP Stapling

    ssl_stapling on;
    ssl_stapling_verify on;
    resolver 8.8.8.8 8.8.4.4 valid=300s;
    resolver_timeout 5s;
    
  2. 调整 SSL 会话参数

    ssl_session_tickets off;
    
  3. 考虑使用 TLS 1.3(如果 OpenSSL 支持):

    ssl_protocols TLSv1.2 TLSv1.3;
    
  4. 优化资源加载

    • 使用 HTTP/2 服务器推送关键资源
    • 减少域名分片(HTTP/2 多路复用减少了对域名分片的需求)

常见问题解决

问题1:配置后 HTTP/2 不工作
解决: - 确认 Nginx 版本支持 HTTP/2 - 检查错误日志 tail -f /var/log/nginx/error.log - 确保 SSL 证书配置正确

问题2:浏览器回退到 HTTP/1.1
解决: - 检查 SSL 配置,某些旧版 SSL 配置会导致 HTTP/2 不可用 - 确保没有使用已被 HTTP/2 废弃的加密套件

问题3:性能提升不明显
解决: - 确保所有静态资源也通过 HTTPS 提供服务 - 检查是否有第三方资源拖慢页面加载 - 考虑进一步优化资源加载策略

通过以上配置,您的网站应该能够充分利用 HTTP/2 的多路复用、头部压缩和服务器推送等特性,显著提升加载速度。