在部署如 n8n 這類自動化平臺時,為了保障數據傳輸安全,我們通常會使用 HTTPS 訪問。本文將以 n8n.example.com
為例,介紹如何在 CentOS 7 系統中通過 Nginx 為本地運行在端口 5678
的 n8n 服務配置免費 SSL 證書(Let’s Encrypt)。
🧱 環境準備
-
操作系統:CentOS 7
-
Web 服務器:Nginx
-
應用服務:n8n 運行在本地 5678 端口
-
域名:已將
n8n.example.com
解析至本機公網 IP
📦 第一步:安裝 Certbot 與 Nginx 插件
Certbot 是由 EFF 提供的 Let’s Encrypt 官方客戶端,用于申請和續期 SSL 證書。
sudo yum install -y epel-release
sudo yum install -y certbot python2-certbot-nginx
如果你使用的是 Python 3 的系統環境,改用:
sudo yum install -y python3-certbot-nginx
🌐 第二步:配置 Nginx 反向代理 n8n
新建 Nginx 配置文件:
sudo vi /etc/nginx/conf.d/n8n.conf
寫入以下內容,將 80 端口的請求轉發到本地的 5678:
server {listen 80;server_name n8n.example.com;location / {proxy_pass http://localhost:5678;proxy_http_version 1.1;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection 'upgrade';proxy_set_header Host $host;proxy_cache_bypass $http_upgrade;}
}
保存退出后,測試 Nginx 配置:
sudo nginx -t
若顯示配置成功,重載 Nginx:
sudo systemctl reload nginx
🔐 第三步:使用 Certbot 自動申請 SSL 證書
執行以下命令自動為該域名申請 HTTPS 證書并配置 Nginx:
sudo certbot --nginx -d n8n.example.com
Certbot 會詢問一些確認項:
選擇完后,Certbot 會:
-
自動獲取證書
-
配置 Nginx HTTPS 虛擬主機
-
配置 301 強制跳轉
-
自動重載 Nginx
🔁 第四步:測試 HTTPS 是否生效
打開瀏覽器訪問:
https://n8n.example.com
如果你看到的是 n8n 的界面,并且瀏覽器地址欄顯示綠色鎖🔒,就說明配置成功!
你也可以用命令行測試證書:
curl -I https://n8n.example.com
🔄 第五步:配置自動續期(推薦)
Let’s Encrypt 的證書有效期是 90 天,推薦使用定時任務自動續期。
sudo crontab -e
添加一行:
0 3 * * * /usr/bin/certbot renew --quiet
這樣每天凌晨 3 點會靜默執行續期檢查。
📄 補充:最終生成的 Nginx 配置參考
server {listen 80;server_name n8n.example.com;return 301 https://$host$request_uri;
}server {listen 443 ssl;server_name n8n.example.com;ssl_certificate /etc/letsencrypt/live/n8n.example.com/fullchain.pem;ssl_certificate_key /etc/letsencrypt/live/n8n.example.com/privkey.pem;location / {proxy_pass http://localhost:5678;proxy_http_version 1.1;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection 'upgrade';proxy_set_header Host $host;proxy_cache_bypass $http_upgrade;}
}