分兩部分來說:
一、安裝好SSL證書
幸虧以前裝過證書,就少走彎路,直奔Let's Encrypt。
可是,智者千慮,必有一失。忽略了Vultr官方自帶證書安裝,耽誤不必要的時間精力。具體參考 Install Let's Encrypt SSL on One-Click wordPress/ target=_blank class=infotextkey>WordPress
步驟清晰明了:
1. Install Certificate
SSH to the server as root and run certbot. Here's an example:
# certbot --Nginx --redirect -d example.com -d www.example.com -m admin@example.com --agree-tos
2. Verify Automatic Renewal
Let's Encrypt certificates are valid for 90 days. The certbot wizard updates the systemd timers and crontab to automatically renew your certificate.
- Verify the timer is active.
# systemctl list-timers | grep 'certbot|ACTIVATES' - Verify the crontab entry exists.# ls -l /etc/cron.d/certbot
- Verify the renewal process works with a dry run.
# certbot renew --dry-run
安裝好證書就試試https訪問,正常的話域名前面有個小鎖的圖標,點擊可以查看證書有效期。
本站測試https下安裝證書ok,但是發現http不會自動跳轉https,于是便著手解決,那就是第二部分內容。
二、強制HTTP跳轉HTTPS
按說第一步命令已包含強制跳轉
--redirect
Redirect all HTTP requests to HTTPS.
無奈只有手動解決,巧的是vultr官網也有這個問題解決辦法。
Redirect HTTP Requests To HTTPS On Nginx
主要就是增加幾行代碼,其中加粗的是重中之重,稍后再說。
server {
listen 80;
server_name example.com www.example.com;
# Redirect all port 80 (HTTP) requests to port 443 (HTTPS).
return 301 https://example.com$request_uri;
}
以為按上面添加幾行就皆大歡喜?沒呢,最后還有命令,讓配置文件生效。
本人用的是service nginx reload。終于搞定!
命令參考如下:
nginx -s signal
signal 的值如下:
stop:fast shutdown,快速的停止 nginx
quit:graceful shutdown,不再接受新的請求,等正在處理的請求出完成后在進行停止(優雅的關閉)
reload:reloading the configuration file,重新加載配置文件
reopen:reopening the log files,重新寫入日志文件
文末補充以上操作的軟硬件環境:
硬件:蘋果本M1 macBookPro 16G+1T
軟件:利用vultr的官方自帶終端
事后小結、一定要耐心細致,特別是命令的使用。