Note:
- 具体使用的HTTP版本可通过浏览器控制台查看。
- 检测下自己的网站是否支持HTTP2:
- 关于HTTP/2和HTTP/1速度对比
环境要求
-
Nginx的版本必须在1.9.5以上,该版本的Nginx使用http_v2_module模块替换了ngx_http_spdy_module;
-
开启https加密,目前http2.0只支持开启了https的网站;
-
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的支持情况:
可能遇到的问题
- 开启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