在當(dāng)今數(shù)字化的時(shí)代,網(wǎng)站的安全性和性能至關(guān)重要。Nginx 作為一款輕量級(jí)且高性能的 Web 服務(wù)器,結(jié)合 SSL 證書可以為網(wǎng)站提供安全的 HTTPS 連接。Ubuntu 是一個(gè)廣泛使用的 Linux 發(fā)行版,下面將詳細(xì)介紹如何在 Ubuntu 系統(tǒng)中為網(wǎng)站配置 Nginx + SSL。
一、安裝 Nginx
首先,我們需要在 Ubuntu 系統(tǒng)上安裝 Nginx。打開終端,使用以下命令更新系統(tǒng)軟件包列表:
sudo apt update
更新完成后,執(zhí)行以下命令來安裝 Nginx:
sudo apt install nginx
安裝過程中,系統(tǒng)會(huì)提示你確認(rèn)安裝,輸入 “Y” 并回車即可。安裝完成后,使用以下命令啟動(dòng) Nginx 服務(wù):
sudo systemctl start nginx
為了讓 Nginx 在系統(tǒng)啟動(dòng)時(shí)自動(dòng)啟動(dòng),可以使用以下命令將其設(shè)置為開機(jī)自啟:
sudo systemctl enable nginx
我們可以通過訪問服務(wù)器的 IP 地址來驗(yàn)證 Nginx 是否安裝成功。在瀏覽器中輸入服務(wù)器的 IP 地址,如果看到 Nginx 的歡迎頁面,說明安裝成功。
二、配置 Nginx 虛擬主機(jī)
接下來,我們要為網(wǎng)站配置 Nginx 虛擬主機(jī)。虛擬主機(jī)允許我們在同一臺(tái)服務(wù)器上托管多個(gè)網(wǎng)站。首先,創(chuàng)建一個(gè)新的 Nginx 配置文件,假設(shè)我們的網(wǎng)站域名為 “example.com”,可以使用以下命令創(chuàng)建配置文件:
sudo nano /etc/nginx/sites-available/example.com
在打開的文件中,輸入以下配置內(nèi)容:
server {
listen 80;
server_name example.com www.example.com;
root /var/www/example.com/html;
index index.html index.htm index.nginx-debian.html;
location / {
try_files $uri $uri/ =404;
}
}上述配置中,“l(fā)isten 80” 表示監(jiān)聽 HTTP 端口 80;“server_name” 指定了網(wǎng)站的域名;“root” 指定了網(wǎng)站文件的根目錄;“index” 指定了默認(rèn)的索引文件。
保存并關(guān)閉文件后,我們需要?jiǎng)?chuàng)建網(wǎng)站文件的根目錄:
sudo mkdir -p /var/www/example.com/html
然后,為該目錄設(shè)置合適的權(quán)限:
sudo chown -R $USER:$USER /var/www/example.com/html sudo chmod -R 755 /var/www/example.com
接著,我們可以創(chuàng)建一個(gè)簡單的測試頁面:
echo "Hello, World!" | sudo tee /var/www/example.com/html/index.html
最后,啟用該虛擬主機(jī)配置文件:
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
為了確保配置文件沒有語法錯(cuò)誤,可以使用以下命令進(jìn)行檢查:
sudo nginx -t
如果檢查通過,重新加載 Nginx 服務(wù):
sudo systemctl reload nginx
三、獲取 SSL 證書
為了實(shí)現(xiàn) HTTPS 連接,我們需要獲取 SSL 證書。這里推薦使用 Let's Encrypt,它是一個(gè)免費(fèi)的、自動(dòng)化的證書頒發(fā)機(jī)構(gòu)。首先,安裝 Certbot 工具:
sudo apt install certbot python3-certbot-nginx
安裝完成后,使用 Certbot 為我們的網(wǎng)站獲取 SSL 證書:
sudo certbot --nginx -d example.com -d www.example.com
執(zhí)行上述命令后,Certbot 會(huì)自動(dòng)檢查 Nginx 配置文件,驗(yàn)證域名所有權(quán),并為我們的網(wǎng)站獲取 SSL 證書。在獲取證書的過程中,Certbot 會(huì)提示我們選擇是否將 HTTP 請(qǐng)求重定向到 HTTPS,建議選擇重定向,這樣可以確保所有訪問都通過安全的 HTTPS 連接。
獲取證書成功后,Certbot 會(huì)自動(dòng)更新 Nginx 配置文件,添加 SSL 相關(guān)的配置。此時(shí),我們可以再次檢查 Nginx 配置文件的語法:
sudo nginx -t
如果檢查通過,重新加載 Nginx 服務(wù):
sudo systemctl reload nginx
四、配置 SSL 優(yōu)化
為了提高 SSL 連接的性能和安全性,我們可以對(duì) SSL 配置進(jìn)行優(yōu)化。打開 Nginx 配置文件:
sudo nano /etc/nginx/sites-available/example.com
在 “server” 塊中添加以下 SSL 優(yōu)化配置:
ssl_protocols TLSv1.3; # 僅使用 TLS 1.3 協(xié)議 ssl_prefer_server_ciphers on; ssl_ciphers ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384; ssl_session_timeout 1d; ssl_session_cache shared:SSL:50m; ssl_session_tickets off;
上述配置中,“ssl_protocols” 指定了僅使用 TLS 1.3 協(xié)議,這是目前最安全和高效的 TLS 協(xié)議;“ssl_ciphers” 指定了使用的加密套件。
保存并關(guān)閉文件后,再次檢查 Nginx 配置文件的語法:
sudo nginx -t
如果檢查通過,重新加載 Nginx 服務(wù):
sudo systemctl reload nginx
五、設(shè)置證書自動(dòng)更新
Let's Encrypt 的 SSL 證書有效期為 90 天,為了避免證書過期影響網(wǎng)站的正常訪問,我們需要設(shè)置證書自動(dòng)更新。Certbot 提供了自動(dòng)更新的功能,我們可以使用以下命令測試自動(dòng)更新:
sudo certbot renew --dry-run
如果測試通過,我們可以使用 cron 任務(wù)來定期執(zhí)行證書更新操作。打開 cron 表:
sudo crontab -e
在打開的文件中添加以下內(nèi)容:
0 0,12 * * * /usr/bin/certbot renew --quiet
上述配置表示每天的 0 點(diǎn)和 12 點(diǎn)自動(dòng)執(zhí)行證書更新操作。保存并關(guān)閉文件后,cron 任務(wù)會(huì)自動(dòng)生效。
六、監(jiān)控和維護(hù)
為了確保網(wǎng)站的正常運(yùn)行,我們需要對(duì) Nginx 和 SSL 證書進(jìn)行監(jiān)控和維護(hù)。可以使用以下命令查看 Nginx 服務(wù)的狀態(tài):
sudo systemctl status nginx
如果發(fā)現(xiàn) Nginx 服務(wù)出現(xiàn)異常,可以使用以下命令重啟服務(wù):
sudo systemctl restart nginx
同時(shí),我們可以定期檢查 SSL 證書的有效期,確保證書不會(huì)過期。可以使用以下命令查看證書的有效期:
sudo certbot certificates
如果發(fā)現(xiàn)證書即將過期,可以手動(dòng)執(zhí)行證書更新操作:
sudo certbot renew
通過以上步驟,我們成功在 Ubuntu 系統(tǒng)中為網(wǎng)站配置了 Nginx + SSL,實(shí)現(xiàn)了網(wǎng)站的安全訪問。在實(shí)際應(yīng)用中,我們還可以根據(jù)需要對(duì) Nginx 和 SSL 配置進(jìn)行進(jìn)一步的優(yōu)化和調(diào)整,以滿足不同的業(yè)務(wù)需求。