這篇文章主要是關(guān)于如何部署使用 https 的 Meteor App登失。
https
https 主要是解決了三個(gè)問題懦铺。
- 身份確認(rèn)担败。確保和真正的用戶交流
- 保密樊卓。避免別人嗅探通信內(nèi)容
- 完整性拿愧。避免別人修改內(nèi)容
關(guān)于要不要使用 https,大家可以看看這段 Google I/O 2016 的演講(需要翻墻)碌尔。演講者回答了大家普遍擔(dān)心的 https 會(huì)不會(huì)影響性能和難以維護(hù)的問題浇辜。簡(jiǎn)單的結(jié)論就是這些擔(dān)心已經(jīng)過時(shí)了,https 反而可能會(huì)提高性能(例如啟用 http/2 只能是 https)唾戚,維護(hù)工作量也很少柳洋,證書也可以找到免費(fèi)的,或者很便宜的叹坦⌒芰停總之,https 一定是一個(gè)趨勢(shì)募书,甚至你沒有敏感數(shù)據(jù)要保護(hù)的情況下绪囱,例如一些展示靜態(tài)信息的網(wǎng)站,也推薦使用 https莹捡。
部署
我們利用開源工具 mup 來部署 Meteor app鬼吵,而 mup 又是使用了 docker,所以第一步我們要讓服務(wù)器能夠使用 docker篮赢。服務(wù)器的設(shè)置詳見 http://www.reibang.com/p/e01888b8af8e 齿椅。
然后我們按照 mup 的文檔生成并配置好琉挖。和普通 http 設(shè)置不一樣的是,得把 ROOT_URL 改為 https 的地址涣脚,還有添加
ssl: {
autogenerate: {
email: 'youremail@gmail.com',
domains: 'yoursite.com'
}
}
當(dāng)然還有安裝 force-ssl 的包 https://atmospherejs.com/meteor/force-ssl 示辈。
這樣你的網(wǎng)站就是使用 https 了。這里證書使用的是免費(fèi)的 Let's Encrypt遣蚀,然后自動(dòng)每 30 天更新一次矾麻。
CDN
如果你的網(wǎng)站引入了 CDN,那么也必須是使用 https芭梯。只有少量的瀏覽器支持兩種協(xié)議混用的射富。關(guān)于 Meteor app 使用 CDN,可以參考 http://www.reibang.com/p/98388e50ab0a 粥帚。我使用的是七牛的 CDN 服務(wù)胰耗。之前也用過阿里云的,但是他們的 CDN 在使用 gzip 的時(shí)候有問題芒涡。七牛提供 TrustAsia 的免費(fèi) TLS 證書柴灯,但是只能用于七牛 CDN 自身。
使用的時(shí)候注意記得把 mup 配置的 CDN_URL 修改為 https 的地址费尽。另外赠群,七牛驗(yàn)證證書的時(shí)候可能需要先在你的域名提供商的配置里解析 txt 記錄,在七牛通過驗(yàn)證后再刪除 txt 記錄旱幼,然后再把這個(gè) CDN 域名配置為 cname 記錄查描。
最后再次 deploy,成功后在瀏覽器輸入你的網(wǎng)址柏卤,就會(huì)自動(dòng)跳轉(zhuǎn)到 https 的域名了冬三。最后如果你有其他 REST服務(wù)是非 https 的,那么你可以通過后端轉(zhuǎn)一下缘缚,這樣就可以達(dá)到全站 https 了勾笆。