n8n HTTPS 設定教學:Nginx 反向代理 + SSL 憑證一次搞定
教你用 Nginx 反向代理幫 n8n 加上 HTTPS。從 Nginx 安裝到 Let's Encrypt SSL 憑證申請,附完整設定檔和 Cloudflare 替代方案。
n8n HTTPS 設定教學:Nginx 反向代理 + SSL 憑證一次搞定
n8n 裝好之後,如果你要放到正式網域上(不是 localhost),就需要加 HTTPS。這篇教你用 Nginx + Let’s Encrypt 搞定,附完整設定檔可以直接複製。
為什麼需要 HTTPS?
三個理由,都很實際:
- Webhook 要 HTTPS 才能用 — Gmail、Slack、LINE 這些服務只接受 HTTPS 的 Webhook 網址。沒有 HTTPS,你的觸發器收不到資料
- 帳號密碼不能裸奔 — 沒有 HTTPS,你登入 n8n 的帳號密碼會在網路上明文傳送
- 瀏覽器會擋你 — Chrome 對 HTTP 網站會顯示「不安全」警告
白話版:HTTPS 就是幫你的 n8n 加密碼鎖,外面的人看不到你在傳什麼。
事前準備
在開始之前,你需要:
| 項目 | 說明 |
|---|---|
| 一台 VPS | 已經跑著 n8n(照 Docker 安裝教學 裝好的) |
| 一個網域 | 例如 n8n.yourdomain.com |
| DNS 設定 | 把網域的 A 記錄指到你的 VPS IP |
還沒裝 n8n?先看 n8n Docker 安裝教學。不想自己裝?一鍵部署也可以。
Step 1:安裝 Nginx 和 Certbot
sudo apt update
sudo apt install -y nginx certbot python3-certbot-nginx
裝完確認 Nginx 有跑起來:
sudo systemctl status nginx
看到 active (running) 就對了。
Step 2:設定 Nginx 反向代理
白話版:反向代理就是 Nginx 站在 n8n 前面,外面的人先到 Nginx,Nginx 再幫忙轉給後面的 n8n。好處是 HTTPS 交給 Nginx 處理,n8n 本身不用管。
2.1 建立 Nginx 設定檔
sudo nano /etc/nginx/sites-available/n8n
貼上以下內容(把 n8n.yourdomain.com 換成你的網域):
server {
listen 80;
server_name n8n.yourdomain.com;
location / {
proxy_pass http://localhost:5678;
proxy_http_version 1.1;
# WebSocket 支援(n8n 編輯器需要)
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
# 傳遞真實 IP
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# 防止大檔案上傳被擋
client_max_body_size 50M;
# 長時間執行的 workflow 不被斷線
proxy_read_timeout 300s;
proxy_send_timeout 300s;
}
}
2.2 啟用設定
# 建立捷徑
sudo ln -s /etc/nginx/sites-available/n8n /etc/nginx/sites-enabled/
# 測試設定有沒有寫錯
sudo nginx -t
# 重新載入 Nginx
sudo systemctl reload nginx
nginx -t 顯示 syntax is ok 就沒問題。
Step 3:申請 Let’s Encrypt SSL 憑證
Let’s Encrypt 是免費的 SSL 憑證,Certbot 會幫你自動申請和設定。
sudo certbot --nginx -d n8n.yourdomain.com
Certbot 會問你幾個問題:
- Email — 填你的 email(憑證快過期會通知你)
- 同意條款 — 按 Y
- 要不要把 HTTP 轉到 HTTPS — 選
2: Redirect(建議)
完成後 Certbot 會自動修改你的 Nginx 設定檔,加上 SSL 的部分。
確認憑證有裝好
打開瀏覽器,輸入 https://n8n.yourdomain.com,看到 n8n 登入畫面 + 網址列有鎖頭圖示,就成功了。
自動續約
Let’s Encrypt 的憑證 90 天到期,但 Certbot 裝好後會自動設定續約。確認一下:
sudo certbot renew --dry-run
沒有錯誤就表示自動續約有設定好。
Step 4:更新 n8n 環境變數
HTTPS 設好之後,要告訴 n8n「你現在是用 HTTPS 了」。
打開你的 .env 檔:
# .env
# 改這三行
N8N_PROTOCOL=https
N8N_HOST=n8n.yourdomain.com
WEBHOOK_URL=https://n8n.yourdomain.com/
# 加這行(告訴 n8n 前面有一層代理)
N8N_PROXY_HOPS=1
改完之後重啟 n8n:
docker compose down && docker compose up -d
Step 5:驗證一切正常
5.1 測試網頁
打開 https://n8n.yourdomain.com,確認可以正常登入和操作。
5.2 測試 Webhook
在 n8n 裡面建一個簡單的 Webhook 節點,看看產生的 URL 是不是 https:// 開頭的。如果還是 http://,檢查你的 WEBHOOK_URL 環境變數有沒有設對。
5.3 測試 SSL 憑證
用 SSL Labs 輸入你的網域,看看評分。正常應該是 A 或 A+。
替代方案:用 Cloudflare 搞定 HTTPS
如果你不想碰 Nginx 和 Certbot,Cloudflare 提供另一種方式:
方法 A:Cloudflare Proxy(最簡單)
- 把你的網域 DNS 管理移到 Cloudflare
- 加一筆 A 記錄指到你的 VPS,開啟橘色雲朵(Proxy)
- SSL/TLS 設定選「Full」
- 這樣流量就會經過 Cloudflare → 自動有 HTTPS
好處:不用裝 Nginx、不用裝 Certbot、設定最少。
方法 B:Cloudflare Tunnel(更安全)
- 在 VPS 上安裝
cloudflared - 建立 Tunnel 連到你的 n8n(port 5678)
- 在 Cloudflare Dashboard 設定 Tunnel 路由
好處:VPS 不用開放任何 port,連防火牆都不用設。
Cloudflare Tunnel 的詳細教學可以看 Cloudflare 官方文件。
完整的 Nginx 設定檔(Certbot 處理完的樣子)
給你參考 Certbot 自動處理完後,完整的設定檔長這樣:
server {
server_name n8n.yourdomain.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_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
client_max_body_size 50M;
proxy_read_timeout 300s;
proxy_send_timeout 300s;
}
listen 443 ssl;
ssl_certificate /etc/letsencrypt/live/n8n.yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/n8n.yourdomain.com/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
}
server {
if ($host = n8n.yourdomain.com) {
return 301 https://$host$request_uri;
}
listen 80;
server_name n8n.yourdomain.com;
return 404;
}
常見錯誤
❌ 502 Bad Gateway
Nginx 連不到 n8n。檢查 n8n 有沒有在跑:
docker compose ps
如果 n8n 容器沒在跑,重啟它:
docker compose up -d
❌ Webhook URL 還是 http://
確認 .env 裡面 WEBHOOK_URL 是 https:// 開頭,然後重啟 n8n。
❌ Certbot 申請失敗
常見原因:
- DNS 的 A 記錄還沒生效(等幾分鐘再試)
- 防火牆擋了 80 port(Certbot 需要 80 port 驗證)
# 確認防火牆開了 80 和 443
sudo ufw allow 80
sudo ufw allow 443
❌ WebSocket connection failed
n8n 編輯器用 WebSocket,如果 Nginx 設定少了 Upgrade 和 Connection headers,編輯器會連不上。確認你的設定檔有這兩行:
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
下一步
HTTPS 搞定之後:
- n8n 備份與更新 SOP — 設好自動備份,別讓資料不見
- n8n 介面完全導覽 — 開始認識 n8n 介面
- n8n 完整入門指南 — 從安裝到第一個自動化的完整地圖
不想自己搞 HTTPS?
SSL 憑證、Nginx 設定、防火牆… 搞這些的時間拿去做自動化不是更好嗎?
我們幫你架好,HTTPS 都設好了 >> n8nstart.cc/hosting
本文最後更新:2026-03-21 有問題?到 n8n 官方社群 或 N8NMarket 粉專 問我們。