Để cấu hình Nginx Reverse Proxy và SSL cho n8n hoặc OpenClaw trên VPS, bạn cần trỏ tên miền về máy chủ, cài đặt Nginx, thiết lập chuyển tiếp đến cổng ứng dụng và kích hoạt HTTPS bằng Let’s Encrypt. Sau khi hoàn tất, bạn có thể truy cập ứng dụng qua tên miền riêng mà không cần nhập địa chỉ IP hoặc cổng dịch vụ. Cùng Tino tìm hiểu cách thực hiện qua bài viết dưới đây nhé!
Nginx Reverse Proxy và SSL là gì?
Nginx Reverse Proxy là một máy chủ trung gian tiếp nhận yêu cầu từ người dùng rồi chuyển tiếp đến ứng dụng đang chạy phía sau, chẳng hạn như n8n hoặc OpenClaw.
Thông thường, n8n sử dụng cổng 5678, trong khi OpenClaw Gateway sử dụng cổng 18789 theo cấu hình mặc định.
Ví dụ, thay vì truy cập n8n bằng địa chỉ: http://IP-VPS:5678, bạn có thể cấu hình để truy cập qua: https://example.com

Khi kết hợp Nginx Reverse Proxy với chứng chỉ SSL, hệ thống mang lại những lợi ích chính:
- Truy cập thuận tiện: Sử dụng tên miền thay cho địa chỉ IP và cổng.
- Mã hóa kết nối: HTTPS bảo vệ dữ liệu truyền giữa trình duyệt và Nginx.
- Quản lý tập trung: Nginx có thể xử lý nhiều tên miền và ứng dụng khác nhau.
- Hạn chế phơi bày cổng ứng dụng: Chỉ công khai những cổng thật sự cần thiết.
Lưu ý rằng SSL bảo vệ đường truyền, không thay thế các cơ chế đăng nhập, phân quyền và bảo mật của ứng dụng.
Hướng dẫn cấu hình Nginx Reverse Proxy và SSL cho n8n
Bước 1. Kiểm tra n8n và trỏ tên miền về VPS
Đầu tiên, đăng nhập VPS n8n bằng SSH thông qua Xshell hoặc ứng dụng Terminal.
Kiểm tra container n8n:
sudo docker ps
Nếu n8n đang hoạt động, danh sách container sẽ hiển thị ứng dụng cùng thông tin cổng tương ứng.
Tiếp tục kiểm tra khả năng truy cập n8n từ VPS:
curl -I http://127.0.0.1:5678

Nếu nhận được phản hồi HTTP, chẳng hạn 200 OK hoặc mã chuyển hướng hợp lệ, ứng dụng đang phản hồi yêu cầu.
Nếu báo không kết nối được, hãy kiểm tra cấu hình cổng Docker trước khi tiếp tục.
Sau đó, truy cập trang quản lý DNS của tên miền và tạo bản ghi A:
Type Name Value A example.com IP công khai của VPS n8n
Lưu thay đổi và kiểm tra DNS trên VPS:
getent ahostsv4 example.com

Khi kết quả trả về đúng IP của VPS, bạn có thể chuyển sang bước tiếp theo.
Bước 2. Cài đặt Nginx trên VPS
Sau khi DNS trỏ chính xác, tiến hành cài đặt Nginx và trình chỉnh sửa nano:
sudo apt update
sudo apt install -y nginx nano snapd
Khởi động Nginx:
sudo systemctl enable --now nginx
Kiểm tra trạng thái:
sudo systemctl status nginx
Nếu hiển thị active (running), Nginx đã khởi động thành công.

Tiếp theo, bảo đảm VPS cho phép kết nối đến cổng 80 và 443. Nếu đang sử dụng UFW, thực hiện:
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
Nếu chưa có UFW, cài đặt:
sudo apt install ufw -y
Đồng thời kiểm tra quy tắc tường lửa của nhà cung cấp VPS. Nếu dự định kích hoạt UFW, cần cho phép cổng SSH đang sử dụng trước để tránh mất quyền truy cập từ xa.
sudo ufw allow 22/tcp
Bước 3. Tạo cấu hình Nginx Reverse Proxy
Ở bước này, Nginx sẽ được cấu hình để chuyển các yêu cầu đến tên miền sang cổng 5678 của n8n.
Tạo tệp cấu hình:
sudo nano /etc/nginx/sites-available/n8n
Dán nội dung sau:
map $http_upgrade $connection_upgrade {
default upgrade;
"" close;
}
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://127.0.0.1:5678;
proxy_http_version 1.1;
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-Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_read_timeout 300s;
}
}
Thay example.com bằng tên miền thật của bạn.
Trong cấu hình trên:
- server_name: Tên miền được Nginx tiếp nhận.
- proxy_pass: Địa chỉ nội bộ và cổng ứng dụng n8n.
- X-Forwarded-*: Các thông tin về yêu cầu ban đầu được chuyển tiếp đến ứng dụng.
- Upgrade và Connection: Hỗ trợ các kết nối WebSocket cần thiết.
Nginx có hướng dẫn chính thức về cơ chế chuyển tiếp WebSocket thông qua Reverse Proxy.

Sau khi dán nội dung, nhấn Ctrl + O → Enter để lưu, rồi nhấn Ctrl + X để thoát nano.
Kích hoạt cấu hình:
sudo ln -s /etc/nginx/sites-available/n8n /etc/nginx/sites-enabled/
Kiểm tra cú pháp:
sudo nginx -t

Nếu xuất hiện syntax is ok và test is successful, tải lại Nginx:
sudo systemctl reload nginx
Lúc này, tên miền đã có thể chuyển tiếp yêu cầu HTTP đến n8n.
Bước 4. Cài đặt SSL miễn phí bằng Let’s Encrypt
Để kích hoạt HTTPS, sử dụng Certbot để cấp chứng chỉ Let’s Encrypt và cấu hình SSL cho Nginx.
Cài đặt Certbot bằng Snap:
sudo snap install --classic certbot
Tạo lệnh Certbot:
sudo ln -s /snap/bin/certbot /usr/local/bin/certbot
Nếu liên kết đã tồn tại và Certbot hoạt động, không cần tạo lại.
Tiếp theo, yêu cầu cấp chứng chỉ:
sudo certbot --nginx -d example.com
Thay tên miền minh họa bằng tên miền đã cấu hình.

Nhập địa chỉ Gmail hoặc email đang sử dụng của bạn. Sau đó nhấn Enter.
Certbot sẽ yêu cầu chấp nhận điều khoản sử dụng của Let’s Encrypt.
Thông thường sẽ xuất hiện lựa chọn: (Y)es/(N)o. Nhập Y rồi nhấn Enter để đồng ý.
Nếu Certbot hỏi bạn có muốn nhận email từ EFF hay không, có thể chọn N nếu không muốn.

Chờ Certbot xác thực tên miền và cài đặt chứng chỉ SSL.
Nếu thành công, Certbot sẽ hiển thị thông báo tương tự:
Successfully received certificate.
Successfully deployed certificate.
Certbot có khả năng tự chỉnh sửa cấu hình Nginx để kích hoạt HTTPS và hỗ trợ gia hạn chứng chỉ tự động.
Sau khi cài đặt, mở trình duyệt và truy cập: https://example.com
Nếu chứng chỉ hợp lệ và ứng dụng phản hồi, trang n8n sẽ được tải qua HTTPS.

Kiểm tra cơ chế gia hạn SSL:
sudo certbot renew --dry-run
Đây là thao tác kiểm tra thử quá trình gia hạn, không yêu cầu cấp mới chứng chỉ đang sử dụng.

Bước 5. Cập nhật cấu hình n8n
Sau khi kích hoạt SSL, cần cập nhật địa chỉ công khai của n8n để hệ thống tạo liên kết webhook và địa chỉ trình chỉnh sửa chính xác.
Đối với n8n chạy bằng Docker Compose, mở tệp compose.yaml hoặc docker-compose.yml trong thư mục triển khai hiện tại.
Tìm tệp Docker Compose:
sudo find /opt /root /home -type f \( -name "compose.yaml" -o -name "docker-compose.yml" -o -name "compose.yml" -o -name "docker-compose.yaml" \) 2>/dev/null
Ví dụ, kết quả có thể là:
/opt/n8n/docker-compose.yml
Nếu kết quả là /opt/n8n/docker-compose.yml, nhập:
sudo nano /opt/n8n/docker-compose.yml
Trong phần environment của dịch vụ n8n, bổ sung hoặc điều chỉnh các biến:
environment:
- N8N_HOST=example.com
- N8N_PORT=5678
- N8N_PROTOCOL=https
- N8N_EDITOR_BASE_URL=https://example.com/
- N8N_WEBHOOK_URL=https://example.com/
- N8N_PROXY_HOPS=1
Đây chỉ là đoạn cấu hình cần bổ sung, không phải toàn bộ tệp Docker Compose. Cần giữ nguyên các biến môi trường, volume, database và thông tin cấu hình đang sử dụng.

Lưu tệp (Ctrl + O => Ctrl + X) rồi chạy lệnh sau trong đúng thư mục Docker Compose hiện tại:
sudo docker compose up -d
Không xóa volume hoặc tạo lại dự án Docker Compose từ đầu, vì có thể ảnh hưởng đến dữ liệu workflow và thông tin xác thực đã lưu.
Bước 6. Kiểm tra kết quả và bảo mật cổng ứng dụng
Mở trình duyệt và truy cập tên miền HTTPS đã cấu hình.
Nếu thành công, bạn có thể:
- Truy cập giao diện n8n qua tên miền riêng.
- Đăng nhập và sử dụng workflow bình thường.
- Sử dụng URL webhook HTTPS để kết nối các dịch vụ bên ngoài.
- Truy cập ứng dụng mà không cần thêm :5678 vào tên miền.
Để kiểm tra thêm từ VPS, chạy:
sudo nginx -t
sudo systemctl status nginx
sudo docker ps

Cấu hình Nginx Reverse Proxy cho OpenClaw có gì khác?
OpenClaw sử dụng được cùng quy trình cài Nginx và SSL như n8n, nhưng không thể áp dụng nguyên toàn bộ cấu hình ứng dụng. OpenClaw Gateway có hệ thống xác thực, kiểm tra nguồn kết nối và WebSocket riêng.
Đối với OpenClaw được cài trực tiếp trên VPS Ubuntu, hãy thực hiện các bước cài Nginx, trỏ DNS và cấp SSL tương tự phần n8n, nhưng thực hiện trên VPS OpenClaw, không phải VPS n8n.
Những thông số cần thay đổi
| Thông số | n8n | OpenClaw |
| Tên miền minh họa | example.com | example.com |
| Cổng mặc định | 5678 | 18789 |
| Reverse Proxy | Nginx | Nginx |
| SSL | Let’s Encrypt | Let’s Encrypt |
| Xử lý WebSocket | Có | Bắt buộc cho Gateway UI |
| Thiết lập bổ sung | Biến môi trường n8n | Gateway auth, trusted proxies, allowed origins |
Thay đổi cấu hình Nginx
Tạo tệp cấu hình riêng trên VPS OpenClaw, tương tự Bước 3:
sudo nano /etc/nginx/sites-available/openclaw
Sử dụng cấu trúc Nginx đã hướng dẫn, thay tên miền, địa chỉ chuyển tiếp và header X-Forwarded-For như sau:
server_name claw.example.com;
proxy_pass http://127.0.0.1:18789;
proxy_set_header X-Forwarded-For $remote_addr;
Đặt từng dòng trong đúng khối server hoặc location tương ứng của cấu hình đầy đủ ở Bước 3; không thay toàn bộ tệp chỉ bằng ba dòng trên.
Đối với OpenClaw, tài liệu bảo mật khuyến nghị Reverse Proxy ghi đè X-Forwarded-For bằng địa chỉ thực của máy khách để tránh tin tưởng các giá trị do bên ngoài tự cung cấp.
Thiết lập bảo mật Gateway
Với OpenClaw cài trực tiếp trên hệ điều hành, Nginx và Gateway giao tiếp qua loopback. Cấu hình OpenClaw cần cho phép nguồn Reverse Proxy tương ứng và công nhận tên miền HTTPS.

Ví dụ các trường cần có trong cấu hình Gateway:
{
"gateway": {
"bind": "loopback",
"trustedProxies": ["127.0.0.1"],
"controlUi": {
"allowedOrigins": [
"https://claw.example.com"
]
}
}
}
Đây là đoạn minh họa các trường cần ghép vào cấu hình đang có, không phải tệp thay thế hoàn chỉnh. Đặc biệt, cần giữ nguyên cấu hình gateway.auth và token hoặc mật khẩu hiện tại.
Nếu OpenClaw chạy trong Docker, địa chỉ proxy mà Gateway nhìn thấy có thể khác 127.0.0.1; cần xác định đúng địa chỉ mạng Docker trước khi thiết lập trustedProxies. Không tự chuyển Gateway sang 0.0.0.0 để khắc phục lỗi mà chưa kiểm tra bảo mật mạng.
Sau khi chỉnh sửa, kiểm tra cấu hình và khởi động lại Gateway theo cách quản lý đang sử dụng. Đối với bản cài CLI tiêu chuẩn có hỗ trợ các lệnh tương ứng:
openclaw config validate
openclaw gateway restart
Sau đó truy cập https://claw.example.com và hoàn tất xác thực hoặc ghép nối thiết bị nếu được yêu cầu.
Lưu ý bảo mật: Không tắt xác thực Gateway chỉ để truy cập qua tên miền. OpenClaw có thể thực hiện các thao tác trên máy chủ và tương tác với dữ liệu, vì vậy nên ưu tiên truy cập riêng qua Tailscale hoặc hệ thống Access có xác thực khi không cần công khai Gateway lên Internet.
Tài liệu OpenClaw cũng khuyến nghị giữ Gateway trong mạng riêng và hạn chế tối đa các cổng công khai.
Các lỗi thường gặp và cách khắc phục
Trong quá trình cấu hình Nginx Reverse Proxy và SSL, các lỗi phổ biến thường liên quan đến DNS, cổng ứng dụng, chứng chỉ SSL hoặc thiết lập Reverse Proxy.
Lỗi Nguyên nhân thường gặp Cách khắc phục 502 Bad Gateway Nginx không kết nối được ứng dụng Kiểm tra container, cổng 5678/18789 và proxy_pass Không truy cập được tên miền DNS sai, tường lửa chặn hoặc Nginx chưa hoạt động Kiểm tra bản ghi A, cổng 80/443 và trạng thái Nginx Certbot không cấp được SSL DNS chưa trỏ đúng hoặc cổng 80 không thể truy cập Kiểm tra tên miền, bản ghi IPv6 nếu có và tường lửa n8n hiển thị webhook HTTP Chưa cập nhật biến môi trường hoặc container chưa nhận cấu hình mới Kiểm tra N8N_WEBHOOK_URL hoặc WEBHOOK_URL theo phiên bản OpenClaw không kết nối WebSocket Thiếu header nâng cấp WebSocket, cấu hình origin hoặc trusted proxy chưa đúng Kiểm tra Nginx, gateway.controlUi.allowedOrigins và gateway.trustedProxies
Khi chỉnh sửa cấu hình Nginx, luôn kiểm tra cú pháp trước khi tải lại dịch vụ:
sudo nginx -t
sudo systemctl reload nginx
Nếu vẫn phát sinh lỗi, xem log Nginx:
sudo tail -n 50 /var/log/nginx/error.log
Đối với n8n chạy bằng Docker, có thể kiểm tra log của container:
sudo docker logs --tail 50 TEN_CONTAINER_N8N
Thay TEN_CONTAINER_N8N bằng tên container được hiển thị trong kết quả sudo docker ps.
Kết luận
Cấu hình Nginx Reverse Proxy và SSL giúp n8n và OpenClaw có thể được truy cập bằng tên miền HTTPS thay vì địa chỉ IP và cổng ứng dụng. Đối với n8n, bạn chỉ cần cấu hình chuyển tiếp đến cổng 5678, kích hoạt SSL và cập nhật địa chỉ webhook. Với OpenClaw, cần bổ sung các thiết lập xác thực, WebSocket và Trusted Proxy để bảo đảm an toàn.
Sau khi triển khai, hãy kiểm tra hoạt động của ứng dụng, chứng chỉ SSL và tường lửa, đồng thời duy trì việc cập nhật phần mềm thường xuyên.
Những câu hỏi thường gặp
Dùng Cloudflare với n8n có được không?
Được, nhưng nên để bản ghi ở chế độ DNS only khi chạy Certbot lần đầu để tránh lỗi xác thực. Khi bật lại proxy Cloudflare, đặt chế độ SSL/TLS là Full (strict). Chế độ Flexible khiến Cloudflare gọi về VPS bằng HTTP, dễ gây vòng lặp chuyển hướng với cấu hình Certbot.
Sau khi cấu hình Nginx, có cần mở cổng 5678 ra Internet không?
Không. Nếu Nginx và n8n chạy trên cùng VPS, bạn có thể giới hạn cổng ứng dụng bằng 127.0.0.1:5678:5678 trong Docker Compose. Người dùng bên ngoài sẽ kết nối qua HTTPS trên cổng 443, sau đó Nginx chuyển tiếp yêu cầu đến cổng nội bộ.
Có cần mua chứng chỉ SSL để sử dụng Nginx Reverse Proxy không?
Không bắt buộc. Let’s Encrypt cung cấp chứng chỉ SSL/TLS miễn phí và Certbot hỗ trợ tự động cấp, cài đặt, gia hạn chứng chỉ. Bạn chỉ cần có tên miền hợp lệ, cấu hình DNS chính xác và đáp ứng yêu cầu xác thực quyền kiểm soát tên miền.
n8n và OpenClaw có thể sử dụng chung một tên miền không?
Có. Nếu sử dụng cùng một tên miền gốc, bạn có thể tạo hai subdomain riêng, chẳng hạn n8n.example.com và openclaw.example.com. Mỗi subdomain được trỏ đến địa chỉ IP của VPS tương ứng.
OpenClaw đã có SSL thì có cần token hoặc mật khẩu không?
Có. SSL chỉ mã hóa kết nối giữa trình duyệt và máy chủ, không thay thế cơ chế xác thực OpenClaw Gateway. Bạn vẫn cần giữ token, mật khẩu hoặc một phương thức xác thực được hỗ trợ. Không nên vô hiệu hóa xác thực khi công khai Gateway.
