Nginx配置开启HTTP2支持

背景

目前主流的HTTP/1.1标准,自1999年发布的RFC2616之后再未进行修订,实际生产中,想通过HTTP/2使得系统响应更快,顺便体验下这个较新的标准。借用下《图解HTTP》中的一句话:

HTTP2的目标是改善用户在使用Web时的速度体验。

Note:

  • 具体使用的HTTP版本可通过浏览器控制台查看。

Nginx配置开启HTTP2支持

  • 检测下自己的网站是否支持HTTP2:
    Nginx配置开启HTTP2支持

  • 关于HTTP/2和HTTP/1速度对比
    Nginx配置开启HTTP2支持

环境要求

  1. Nginx的版本必须在1.9.5以上,该版本的Nginx使用http_v2_module模块替换了ngx_http_spdy_module;
  2. 开启https加密,目前http2.0只支持开启了https的网站;
  3. openssl的版本必须在1.0.2e及以上;

Note:SPDY源自Google,在2010年发布,取自SPeeDY(音同speedy)。

Nginx配置

server {
    listen  443 ssl http2;
    server_name  www.abc.com;
    ssl_certificate     /opt/cert/3823818_www.abc.com.pem;
    ssl_certificate_key /opt/cert/3823818_www.abc.com.key;
    ssl_session_timeout 5m;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;

    location / {
        proxy_pass https://127.0.0.1:9999;
        proxy_set_header Host $host;
    }
}

至于后端 SpringBoot 服务支持 HTTP2 ,可直接采用 Undertow 作为Web容器。

开启HTTP2之后,再次检测自己网站对HTTP2的支持情况:
Nginx配置开启HTTP2支持

可能遇到的问题

  • 开启HTTPS时报错

    nginx: [emerg] the “ssl” parameter requires ngx_http_ssl_module in /usr/local/nginx/conf/nginx.conf:42

参考这里解决。

  • Nginx配置HTTPS

参考入门Nginx之-代理HTTPS,HTTP强制转HTTPS

  • openssl的版本过低

若版本低于1.0.2e,进行以下升级过程:

# 下载
wget https://www.openssl.org/source/openssl-1.0.2r.tar.gz
# 解压
tar zxvf openssl-1.0.2r.tar.gz
# 进入
cd openssl-1.0.2r
# 配置
./config
# 编译
make
# 安装
make install

#备份旧的命令 
mv /usr/bin/openssl /usr/bin/openssl.old
mv /usr/include/openssl /usr/include/openssl.old

# 添加软连接
ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl
ln -s /usr/local/ssl/include/openssl /usr/include/openssl

# 写入openssl库文件的搜索路径
echo "/usr/local/ssl/lib" >> /etc/ld.so.conf

# 使修改后的搜索路径生效 
ldconfig

# 再次查看openssl版本,确认是否更新
openssl version
  • openssl版本升级后,Nginx用的还是旧版的openssl
    Nginx配置开启HTTP2支持
    这时,需要重新编译Nginx。

Nginx官方下载地址:http://nginx.org/en/download.html

wget http://nginx.org/download/nginx-1.10.2.tar.gz

Reference


If you have any questions or any bugs are found, please feel free to contact me.

Your comments and suggestions are welcome!

上一篇:火爆全网的合成大西瓜小游戏魔改版大全


下一篇:微软发力 RPA:AI+RPA 已成热门趋势