天天看點

維京部落格更新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>