使用nginx开启http2协议

部署过程

HTTP/2是建立在TLS的基础上的,那么先要查看nginx的版本和openssl的版本,如果nginx版本在1.10.0以上且需要openssl版本在1.0.2以上那么就可以进行下一步了:
paradin

如果版本并不符合要求,可以按照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
21
server {
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
5
server {
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,将你的域名填写进去,查看一下配置成功:
paradin

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

感谢您请我喝咖啡~O(∩_∩)O,如果要联系请直接发我邮箱chenx1242@163.com,我会回复你的
-------------本文结束感谢您的阅读-------------