沒有 https 加持的網(wǎng)站會(huì)逐漸地被瀏覽器標(biāo)記為不安全的,所以為網(wǎng)站添加 https 已經(jīng)變得刻不容緩。對(duì)于商業(yè)網(wǎng)站來說,花錢購買 SSL/TLS 證書并不是什么問題。但對(duì)于個(gè)人用戶來說,如果能有免費(fèi)的 SSL/TLS 證書可用將會(huì)是非常幸福的事情!Let's Encrypt 就是一個(gè)提供免費(fèi) SSL/TLS 證書的網(wǎng)站,由于其證書期限只有三個(gè)月,所以需要我們用自動(dòng)化的方式去更新證書。本文將介紹如何為通過 docker 運(yùn)行的 nginx 中的站點(diǎn)添加 https 支持,并自動(dòng)完成證書的更新。本文的演示環(huán)境為:運(yùn)行在 Azure 上的 Ubuntu 16.04 主機(jī)(此圖來自互聯(lián)網(wǎng)):
準(zhǔn)備環(huán)境
在 Azure 上創(chuàng)建 Ubuntu 類型的虛機(jī)事件非常容易的事情,安裝 docker 也無須贅言。比較容易忽略的是配置合適的網(wǎng)絡(luò)安全組規(guī)則,比如打開 80 和 443 端口:
還有就是配置 DNS:
創(chuàng)建一個(gè)普通的 http 站點(diǎn)
簡(jiǎn)單起見,直接使用一個(gè)鏡像中的 nodejs 應(yīng)用作為 web 站點(diǎn):
$ docker pull ljfpower/nodedemo $ docker network create -d bridge webnet $ docker run -d --restart=always --expose=3000 \ --network=webnet --name=myweb \ ljfpower/nodedemo