插件窝 干货文章 Linux上如何启用Nginx的HTTP/2

Linux上如何启用Nginx的HTTP/2

Nginx HTTP SSL 启用 291    来源:    2025-04-24

在Linux上启用Nginx的HTTP/2支持

HTTP/2是HTTP协议的主要修订版本,提供了更快的页面加载速度和更好的网络资源利用。以下是在Linux系统上为Nginx启用HTTP/2的步骤:

前提条件

  1. Nginx版本1.9.5或更高版本
  2. 使用OpenSSL 1.0.2或更高版本编译的Nginx(用于ALPN支持)
  3. 有效的SSL证书(HTTP/2需要HTTPS)

启用HTTP/2的步骤

1. 检查Nginx版本和支持的功能

nginx -V

确保输出中包含--with-http_v2_module(或更高版本中的--with-http_v2_module)。

2. 修改Nginx配置文件

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

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

    server_name yourdomain.com;

    ssl_certificate /path/to/your/cert.pem;
    ssl_certificate_key /path/to/your/private.key;

    # 其他配置...
}

3. 推荐的SSL配置(与HTTP/2配合使用)

ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
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_session_timeout 1d;
ssl_session_cache shared:SSL:50m;
ssl_session_tickets off;

4. 测试配置并重启Nginx

sudo nginx -t  # 测试配置
sudo systemctl restart nginx  # 重启Nginx

5. 验证HTTP/2是否启用

使用以下方法之一验证:

  • 使用curl:

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

    应该看到HTTP/2 200的响应

  • 使用浏览器开发者工具: 在Chrome/Firefox的开发者工具中,网络标签应显示协议为"h2"

  • 在线工具: 使用如https://tools.keycdn.com/http2-test 等在线工具测试

注意事项

  1. HTTP/2需要HTTPS,确保您的SSL证书配置正确
  2. 如果从HTTP/1.1升级,可能需要调整一些优化设置(如取消域分片)
  3. 某些旧版客户端不支持HTTP/2,Nginx会自动回退到HTTP/1.1
  4. 对于CDN后的站点,确保CDN支持HTTP/2并已启用

故障排除

如果HTTP/2没有启用:

  1. 确认Nginx版本足够新
  2. 检查错误日志:sudo tail -f /var/log/nginx/error.log
  3. 确保没有其他配置覆盖了listen指令
  4. 检查SSL证书是否有效

通过以上步骤,您应该能够成功在Linux上的Nginx服务器启用HTTP/2支持。