微服務部署—使用Docker安裝Nginx并配置免費的SSL證書詳解
SSL(Secure Socket Layer,安全套接字層)證書是一種數字證書,用于加密網站與訪問者之間的數據傳輸。SSL證書是網站安全和可靠性的重要保證,是建立信任和保護用戶隱私的重要手段。其作用可以總結為以下幾點:
- 數據安全:SSL證書能夠加密網站和客戶端之間的通信,保護敏感數據不被竊取或篡改。
- 身份驗證:SSL證書能夠驗證網站的身份,確保用戶訪問的是真實的、受信任的網站,而不是惡意網站。
- 提高信任度:擁有SSL證書的網站將獲得瀏覽器的安全標志,如綠色鎖頭,增加用戶對網站的信任度和滿意度。
- SEO優化:谷歌將SSL證書視為網站安全性的重要指標,并將其作為SEO排名的一個因素,擁有SSL證書的網站在搜索引擎中的排名更有優勢。
常見的SSL證書包括以下幾種:
- 域名驗證證書(Domain Validated Certificate,DVC):只驗證域名的所有權,是最基本的SSL證書,適用于小型網站或非商業網站。
- 組織驗證證書(Organization Validated Certificate,OVC):需要驗證域名的所有權和組織的合法性,適用于中型商業網站。
- 擴展驗證證書(Extended Validation Certificate,EVC):需要驗證域名的所有權、組織的合法性以及更嚴格的標準,如證明公司實體存在等,適用于大型商業網站和金融機構等。
- 通配符證書(Wildcard Certificate):適用于一個域名下多個子域名的SSL證書。
- 多域名證書(Multi-Domain Certificate):適用于同一SSL證書下綁定多個域名的情況,也稱為SAN證書(Subject Alternative Name Certificate)。
- 代碼簽名證書(Code Signing Certificate):用于保護軟件或應用程序,驗證軟件的來源和完整性。
mkdir -p /opt/container/nginx/html /opt/container/portal /opt/container/nginx/www /opt/container/nginx/logs /opt/container/nginx/etc /etc/ssl/nginx
chmod -R 777 /opt/container/nginx/html /opt/container/portal /opt/container/nginx/www /opt/container/nginx/logs /opt/container/nginx/etc /etc/ssl/nginx
1234
通過Docker安裝的Nginx,映射的目錄往往沒有默認的配置文件和頁面,如果隨便從其他位置復制,如果配置文件版本不同,會導致Nginx無法訪問。為了解決這個問題,先創建一個Nginx容器,將配置文件和默認的頁面提前復制到宿主機的映射目錄,再把容器刪除即可。我們只是用到它的默認配置文件和頁面,后面步驟是具體搭建Nginx。
docker pull nginx
docker run --name nginx -p 80:80 -d nginx
# 復制nginx默認頁面
docker cp nginx:/usr/share/nginx/html/* /opt/container/nginx/html
# 復制 所有的配置文件
docker cp nginx:/etc/nginx/* /opt/container/nginx/etc
# 用完之后,把容器刪除
docker stop 容器id
docker rm 容器id
12345678910
習慣用docker-compose搭建Docker服務,感覺可以對配置等內容留檔,當然你也可以選擇直接使用Docker命令創建Nginx。
- /opt/container/nginx/html 映射Nginx默認頁面存放目錄。
- /opt/container/portal 映射開發的應用前端頁面存放目錄。
- /etc/ssl/nginx 存放Nginx SSL證書。
(二選一)docker-compose的方式創建Nginx:
version: '3'
services:
##nginx配置
nginx:
image: nginx:latest
restart: always
container_name: nginx
environment:
- TZ=Asia/Shanghai
ports:
- 8000:80
- 4443:443
volumes:
- /opt/container/nginx/html:/usr/share/nginx/html/
- /opt/container/portal:/nginx/html/
- /opt/container/nginx/www:/var/www
- /opt/container/nginx/logs:/var/log/nginx
- /opt/container/nginx/etc:/etc/nginx
- "/etc/localtime:/etc/localtime"
- "/usr/share/zoneinfo/Asia/Shanghai:/etc/timezone"
- /etc/ssl/nginx:/nginx/ssl
123456789101112131415161718192021
(二選一)docker命令的方式創建Nginx:
docker run \
-p 80:80 \
-p 443:443 \
--name=nginx \
-e TZ="Asia/Shanghai" \
--restart=always \
-v /opt/container/nginx/html:/usr/share/nginx/html \
-v /opt/container/portal:/nginx/html \
-v /opt/container/nginx/www:/var/www \
-v /opt/container/nginx/logs:/var/log/nginx \
-v /opt/container/nginx/etc:/etc/nginx \
-v /etc/localtime:/etc/localtime \
-v /usr/share/zoneinfo/Asia/Shanghai:/etc/timezone \
-v /etc/ssl/nginx:/nginx/ssl \
-d nginx:latest
123456789101112131415
如果使用docker命令安裝,則不需要這一步驟。
cd /opt/software
docker-compose -f docker-compose-nginx.yml up -d
12
- 登錄阿里云控制臺,進入[數字證書管理服務] > [SSL證書] > [免費證書]。
- 點擊 [創建證書] > [證書申請],然后按要求填寫申請信息,然后提交審核。
- 等待申請通過,在證書列表中,就會看到已申請的SSL證書,然后點擊下載按鈕,選擇需要部署的服務器類型,我們這里使用的是nginx,所以選擇下載nginx服務器類型的SSL證書。
- 下載成功后,可以得到一個包含域名的zip包,里面有.key和.pem文件
將下載的SSL證書.key和.pem文件上傳到Linux服務器/etc/ssl/nginx目錄,這里因為我們創建docker容器時指定的映射目錄是這個。
server {
listen 80;
listen 443 ssl;
ssl_certificate /nginx/ssl/證書名稱.pem;
ssl_certificate_key /nginx/ssl/證書名稱.key;
server_name 域名;
gzip on;
gzip_buffers 32 4K;
gzip_comp_level 6;
gzip_min_length 100;
gzip_types application/javascript text/css text/xml text/plain application/x-javascript image/jpeg image/gif image/png;
gzip_disable "MSIE [1-6]\.";
gzip_vary on;
#charset koi8-r;
access_log /var/log/nginx/portal.access.log main;
location / {
proxy_set_header Host $http_host;
proxy_set_header X-Real-Ip $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://172.17.0.1:8080/;
}
}
免費證書的優勢通常包括以下幾點:
- 節省成本:免費證書不需要支付任何費用,可以為企業和個人節省一定的成本。
- 風險低:雖然免費證書的安全性可能沒有付費證書高,但是使用免費證書也可以提高網站的加密度,降低網站的風險。
- 簡單易用:免費證書通常非常容易申請和安裝,無需太多的技術知識。
- 全球范圍內認可:雖然免費證書是免費的,但是它們通常具有與付費證書相同的加密等級和瀏覽器兼容性。這意味著它們在全球范圍內得到認可和接受。
- 短期有效期:免費證書的有效期通常比付費證書短,需要更頻繁地更新或重新申請,但這也可以確保證書的安全性和有效性。
免費的證書有效期只有一年,而且是單域名證書,對于小型項目或者剛剛起步的網站,可以節省成本,就是在操作上需要每年重新申請一次。一般云服務廠商都會有證書申請個數限制,但對于初期項目來說基本夠用了。