天天看点

维京博客升级https记录前期准备旧的配置升级踩的坑参考文献

关于为什么升级https就不说了 一句话为了装逼

怎么买证书就不说了,穷人用的是阿里云提供的的塞门铁客的<code>dv ssl</code>免费版证书,阿里云每人可以申请20<code>张dv ssl证书</code>(一条200,括号内删除。。。一脸正经.gif)。

注意一个<code>dv ssl</code>只能验证一个域名,很坑的一点是这里说的是二级域名。即我申请的<code>viking666.com</code> 证书只能验证<code>viking666.com</code> 不能验证<code>www.viking666.com</code>也不能验证<code>myblog.viking666.com</code>(我这里不是为了打广告.一脸正经.gif)。

买域名通配版的证书(假装很便宜.jpg)

多申请几个 反正一个阿里云账号能申请20个

由于只是验证https的可用性,所以只申请了一个证书来验证viking666.com,别的域名如 www.viking666.com 和 myblog.viking666.com依旧采用http协议

进入aliyun控制台-我的证书-下载,是一个zip文件里面包含一个xxx.pem和xxx.key文件

维京博客升级https记录前期准备旧的配置升级踩的坑参考文献

由于<code>myblog.viking666.com</code>和 <code>www.viking666.com</code>还是走的<code>http</code>协议,所以旧的配置依旧是可用的,只要删掉<code>server_name</code>中的 <code>viking666.com</code>就可以了

创建一个新的nginx配置文件,主体依旧采用旧的配置,但是跟上一节不同这里的<code>server_name</code>中只保留 <code>viking666.com</code>。

还要加一句所以得都301重定向到 https中 <code>return 301 https://$server_name$request_uri;</code>

全部配置如下

创建一个新的nginx配置文件,里面的配置如下

关于新加的配置已经注释的很仔细了,这里就不继续展开了。

修改好上述的nginx配置重启nginx一直启动失败,查看日志(<code>systemctl status nginx.service -l</code>)发现是报错<code>failed to start a high performance web server and a reverse proxy server</code>这里注意到一点<code>nginx: [emerg] duplicate upstream "django_myblog" in /etc/nginx/sites-enabled/myblog_root.conf:2</code>

感觉是这里的upstream冲突的,直接删掉其余的配置文件中的 upstream 只保留旧的那个文件中的(上面的我已删掉),重启搞定。

重启完打开viking666.com会发现已经是https的了但是静态文件全部失败,百度一下就知道https不能使用http的静态文件格式,我的bootstrap jquery等都是用的cdn,这里可以把这些资源下载下来,但是有点治标不治本,也可以修改协议从http修改为https可以了。但是因为有一些二级域名还是采用的http的协议 所以这个方法也不是很好,这里有个方法就是不写具体的协议他就会使用网站本身的协议。

如在https的网站中引用http路径的js或css会导致不起作用,其形如:

<code>&lt;script src="http://cdn.bootcss.com/bootstrap/3.3.0/css/bootstrap.min.css"&gt;&lt;/script&gt;</code>

解决办法:

将http:去掉,改为

<code>&lt;script src="//cdn.bootcss.com/bootstrap/3.3.0/css/bootstrap.min.css"&gt;&lt;/script&gt;</code>

阿里云技术文档 这里在各个控制台里看,放不了链接

<a href="https://segmentfault.com/q/1010000006994159/a-1020000006994432">nginx http 重定向至 https</a>

<a href="https://www.apieye.com/674.html">https网站引用http路径的js和css失效解决办法</a>