最近看到两篇文章对于HTTPS与HTTP2两者讲解的很详细,分享并实践一下,正好近期捣鼓了一个个人站点https://mrdear.cn/,可以用来实验. 文章地址 为什么要把网站升级到HTTPS 怎样把网站升级到http/2
升级的好处如文章所说,另外这里主要用的是certbot-auto
g clone https://github.com/certbot/certbot.git
cd certbot
申请建议只申请证书,nginx配置自己来配.
./certbot-auto certonly --standalone --email `你的邮箱地址` -d `你的域名1` -d `你的域名2`
如果是申请通配符的证书则需要执行以下命令,申请过程需要dns验证你是域名的所有者.
certbot-auto certonly --email '你的邮箱地址' -d '你的域名' --manual --preferred-challenges dns --server https://acme-v02.api.letsencrypt.org/directory
###Nginx配置并且升级HTTP2
正如原作者所说HTTP2具有太多的优势,比如多路复用,对同一个域的服务器只建立一次TCP连接,加载多个资源,使用二进制帧传输,同时会对http头部进行压缩,大大提高了传输的效率.
要注意的是
Nginx启用http2则需要安装http_v2_module
模块,并且需要openssl版本大于1.0.2,由于Chrome改变了验证http2的方式,详情可以参考此文章https://news.cnblogs.com/n/545972/.
推荐做法
nginx的模块是支持静态编译的,因此自己下载所需要的软件版本,然后编译时指定配置相应的版本是最佳解决方案.如下脚本,我配置了http_v2_module
和/opt/openssl-OpenSSL_1_0_2k
的版本,这样nginx编译时则不会去使用系统自带的openssl.注意不要make install
,该命令是会执行安装操作,也就是会把你之前安装的nginx覆盖掉.
在你的Nginx Config配置中加入 --with-http_v2_module
执行make命令
// 无缝更新
cp -rf objs/nginx 你的nginx目录
检查下Makefile文件,其配置的是否与你真是的nginx路径一直
cat Makefile
更新执行
make upgrade
最后在https监听那里加上http2,nginx reload下即可.
listen 443 ssl http2;
ssl_certificate 你的证书地址/fullchain.pem;
ssl_certificate_key 你的证书地址/privkey.pem;
对于chrome最可信的调试方式是访问chrome://net-internals/#http2
,如果显示你的网站使用的协议为h2,那么恭喜你开启了http2
目前https://www.itoolshub.com/已经开启了HTTPS与HTTP2.但是图片是放在七牛云的,七牛的HTTPS收费,所以目前没解决,由于图片并不是很多后期迁到自己的服务器上,或者使用base64形式.