部署过程
HTTP/2
是建立在TLS的基础上的,那么先要查看nginx的版本和openssl的版本,如果nginx
版本在1.10.0
以上且需要openssl
版本在1.0.2
以上那么就可以进行下一步了:
如果版本并不符合要求,可以按照https://rorschachchan.github.io/2018/01/03/Nginx动态编译新的模块/ 里的方法升级对应的模块版本。
先编辑https(443端口)对应的conf
文件:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21server {
listen 443 ssl http2; #这里多加一句http2
server_name cuntao.lechange.com *.lechange.com; #这里填写实际的域名,我这里以cuntao.lechange.com为例
ssl_certificate /实际路径/server-com.crt;
ssl_certificate_key /实际路径/server-com.key;
ssl_session_timeout 30m; #客户端会话缓存时间
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_cache builtin:1000 shared:SSL:10m; #SSL会话缓存类型和大小
ssl_buffer_size 1400; #每个MTU大小1400b
location / {
root html;
index index.html index.htm;
}
error_page 404 /404.html;
}
保存之后再编辑http(80端口)对应的conf
文件:
1
2
3
4
5server {
listen 80 default;
add_header Strict-Transport-Security max-age=15768000;
return 301 https://$host$request_uri;
}
然后使用nginx -t
检查一下是否文件有错误,如果是OK的话,那么就nginx -s reload
平滑重启一下nginx即可。
验证HTTP/2
协议是否开启很简单,有两个方法:
1)登陆https://tools.keycdn.com/http2-test
,将你的域名填写进去,查看一下配置成功:
2)在Chrome浏览器上可以通过安装HTTP/2 and SPDY indicator
插件来检验,网址是https://chrome.google.com/webstore/detail/http2-and-spdy-indicator/mpbpobfflnpcgagjijhmgnchggcjblin ,如果地址栏出现蓝色的闪电就是该网站开启了HTTP/2
协议,灰色的话就是HTTP/2
协议没开启。
参考资料
https://www.nginx.com/blog/nginx-1-9-5/
https://blog.fazero.me/2017/01/06/upgrate-nginx-and-use-http2/
https://iyaozhen.com/nginx-http2-conf.html