配置Nginx开启HTTP2.0

前言

    HTTP/2(超文本传输协议第2版,最初命名为 HTTP 2.0),是在 Google 之前提出的 SPDY 协议的基础上演变而来,相对 HTTP1.1 增加了连接复用、头部压缩、服务端 push 等特性。与 HTTP1.1 完全语义兼容,几乎可以无缝升级。目前主流浏览器都已经支持 HTTP/2 了(IE 自 IE 11 开始支持)

说明:

    Nnginx1.9.5以后支持http2;配置http2方法也很简单,把之前 HTTPS 配置中的 spdy 改成 http2 就行了(listen 443 ssl http2 default_server);编译参数也带有 –with-http_v2_module;OpenSSl升级到最新(新版支持支持 ALPN);另外http2.0只支持开启了https的网站;

开启http2目的

    保证我们的站点在低延时的情况下速度更快更稳定;
    具体更多资料可以参考:https://imququ.com/post/http2-resource.html详细了解

准备工作:
    1.确认本地OpenSSL(openssl1.0.2以上可以忽略此步)是否支持ALPN,或者干脆直接升级到最新版;
    2.配置Nginx参数,开启增加http2;

基本步骤

1.安装最新版的openssl-1.1.0g

cd /usr/local/src
wget https://www.openssl.org/source/openssl-1.1.0g.tar.gz
tar xf openssl-1.1.0g.tar.gz
cd openssl-1.1.0g
./config
make
make install

#把旧版的openssl重命名及设置软连接
mv /usr/bin/openssl /usr/bin/openssl.bak
mv /usr/include/openssl /usr/include/openssl.bak

#设置软连接指向刚编译好的新版本的openssl-1.1.0g

ln -s /usr/local/bin/openssl /usr/bin/openssl
ln -s /usr/local/include/openssl /usr/include/openssl

#添加libssl.so.1.1的软链接

ln -s /usr/local/lib64/libssl.so.1.1 /usr/lib64/libssl.so.1.1
ln -s /usr/local/lib64/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1

#查看openssl版本
openssl version -a

2.升级Ngnix及配置编译参数

#查看Nginx的版本及编译参数
nginx -V
#升级Nginx

cd /usr/local/src
wget http://nginx.org/download/nginx-1.10.2.tar.gz
tar xf nginx-1.10.2.tar.gz
cd nginx-1.10.2
./configure --user=www --group=www --with-http_ssl_module --with-http_stub_status_module --with-http_v2_module --with-http_gzip_static_module --with-http_sub_module --with-openssl=/server/tools/openssl-1.1.0g --pid-path=/var/run/nginx.pid --prefix=/application/nginx-1.10.2/ --add-module=/application/ngx_cache_purge-2.3

make #不要make install
#备份之前旧的nginx二进制文件
mv /application/nginx/sbin/nginx /application/nginx/sbin/nginx.old
#拷贝新的nginx二进制文件
cp nginx /application/nginx/sbin/
#在源代码目录执行 make upgrade
make upgrade
#查看版本
nginx -V

3.配置nignx开启http2

在Nginx配置文件中找到你要开启http2.0的域名server模块,将 listen 443 ssl;改成 listen 443 ssl http2; 即可

server {
	listen 443 ssl http2;
	server_name liuliya.com;
	ssl_certificate /path/to/public.crt;
	ssl_certificate_key /path/to/private.key;
	ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #允许的协议
	ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5; #加密算法(CloudFlare 推荐的加密套件组)
	ssl_prefer_server_ciphers on; #优化 SSL 加密套件
	ssl_session_timeout 10m; #客户端会话缓存时间
	ssl_session_cache builtin:1000 shared:SSL:10m; #SSL 会话缓存类型和大小
	ssl_buffer_size 1400; # 1400 bytes to fit in one MTU

保存配置文件之后,重启或重载Nginx即可生效:
nginx -s reload

4.验证

    安装个chrome插件HTTP/2 and SPDY indicator 开启了http2会有一道蓝色的闪电;
也可以使用第三方网站检测:https://myssl.com/

15 条评论

发表评论

*