Nginx如何实现HTTP/2?

Nginx可以通过ngx_http_v2_module模块支持HTTP/2协议。HTTP/2是HTTP 1.1的后继版本,提供了许多新特性以优化web性能。

要在Nginx中配置HTTP/2,需要:

  1. 编译Nginx时添加–with-http_v2_module参数启用ngx_http_v2_module模块。
  2. 在server块中使用listen指令,并指定http2参数。
server {
    listen       443 ssl http2;  # http2指令启用HTTP/2 
    ...
}
  1. 由于HTTP/2推荐通过TLS加密传输,因此需要配置SSL证书。
server {
    listen       443 ssl http2;  
    ssl_certificate      /path/to/cert;
    ssl_certificate_key  /path/to/key;
}
  1. 可以使用http2_max_concurrent_streams指令限制每个客户端的最大并发流数。默认为128。
http2_max_concurrent_streams 128; 
  1. 使用proxy_http_version指令将请求代理到HTTP/2上游服务器。
location / {
    proxy_pass http://http2_backend;
    proxy_http_version 1.1;   # 将代理协议升级到HTTP/2
}

例如,完整配置:

server {
    listen       443 ssl http2;
    ssl_certificate      /path/to/cert;
    ssl_certificate_key  /path/to/key;

    http2_max_concurrent_streams 128;

    location / {
        proxy_pass http://http2_backend;
        proxy_http_version 1.1;  
    } 
}

这种配置启用了Nginx对HTTP/2协议的支持,可以利用HTTP/2带来的各种优化特性,提高web性能。