close

Cách cấu hình Nginx Reverse Proxy và SSL cho n8n, OpenClaw trên VPS 

Tác giả: Đông Tùng Ngày đăng: 19/10/2026 Chuyên mục: n8n
Disclosure
Website Tino blog được cung cấp bởi Tino Group. Truy cập và sử dụng website đồng nghĩa với việc bạn đồng ý với các điều khoản và điều kiện trong chính sách bảo mật - điều khoản sử dụng nội dung. Tino Group có thể thay đổi điều khoản sử dụng bất cứ lúc nào. Việc bạn tiếp tục sử dụng Tino blog sau khi thay đổi có nghĩa là bạn chấp nhận những thay đổi đó.
Why Trust Us
Các bài viết với hàm lượng tri thức cao tại Tino blog được tạo ra bởi các chuyên viên Marketing vững chuyên môn và được kiểm duyệt nghiêm túc theo chính sách biên tập bởi đội ngũ biên tập viên dày dặn kinh nghiệm. Mọi nỗ lực của chúng tôi đều hướng đến mong muốn mang đến cho cộng đồng nguồn thông tin chất lượng, chính xác, khách quan, đồng thời tuân thủ các tiêu chuẩn cao nhất trong báo cáo và xuất bản.

Để 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

Nginx Reverse Proxy và SSL là gì?
Nginx Reverse Proxy và SSL là gì?

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
Kiểm tra n8n và trỏ tên miền về VPS
Kiểm tra n8n và trỏ tên miền về VPS

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:

TypeNameValue
Aexample.comIP công khai của VPS n8n

Lưu thay đổi và kiểm tra DNS trên VPS:

getent ahostsv4 example.com
Kiểm tra n8n và trỏ tên miền về VPS
Kiểm tra n8n và trỏ tên miền về VPS

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.

Cài đặt Nginx trên VPS
Cài đặt Nginx trên VPS

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.

Tạo cấu hình Nginx Reverse Proxy
Tạo cấu hình Nginx 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
Tạo cấu hình Nginx Reverse Proxy
Tạo cấu hình Nginx Reverse Proxy

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.

Cài đặt SSL miễn phí bằng Let's Encrypt
Cài đặt SSL miễn phí bằng Let’s Encrypt

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.

Cài đặt SSL miễn phí bằng Let's Encrypt
Cài đặt SSL miễn phí bằng Let’s Encrypt

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.

Cài đặt SSL miễn phí bằng Let's Encrypt
Cài đặt SSL miễn phí bằng Let’s Encrypt

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.

Cài đặt SSL miễn phí bằng Let's Encrypt
Cài đặt SSL miễn phí bằng Let’s Encrypt

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.

Cập nhật cấu hình n8n
Cập nhật cấu hình n8n

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
Kiểm tra kết quả và bảo mật cổng ứng dụng
Kiểm tra kết quả và bảo mật cổng ứng dụng

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ốn8nOpenClaw
Tên miền minh họaexample.comexample.com
Cổng mặc định567818789
Reverse ProxyNginxNginx
SSLLet’s EncryptLet’s Encrypt
Xử lý WebSocketCóBắt buộc cho Gateway UI
Thiết lập bổ sungBiến môi trường n8nGateway 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.

Cấu hình Nginx Reverse Proxy cho OpenClaw có gì khác?
Cấu hình Nginx Reverse Proxy cho OpenClaw có gì khác?

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ỗiNguyên nhân thường gặpCách khắc phục
502 Bad GatewayNginx không kết nối được ứng dụngKiểm tra container, cổng 5678/18789 và proxy_pass
Không truy cập được tên miềnDNS sai, tường lửa chặn hoặc Nginx chưa hoạt độngKiểm tra bản ghi A, cổng 80/443 và trạng thái Nginx
Certbot không cấp được SSLDNS chưa trỏ đúng hoặc cổng 80 không thể truy cậpKiểm tra tên miền, bản ghi IPv6 nếu có và tường lửa
n8n hiển thị webhook HTTPChưa cập nhật biến môi trường hoặc container chưa nhận cấu hình mớiKiểm tra N8N_WEBHOOK_URL hoặc WEBHOOK_URL theo phiên bản
OpenClaw không kết nối WebSocketThiếu header nâng cấp WebSocket, cấu hình origin hoặc trusted proxy chưa đúngKiể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.

Đông Tùng

Senior Technology Writer

Là cử nhân Quản trị kinh doanh của Trường Đại học Tài chính - Marketing, Tùng bắt đầu làm việc tại Tino Group từ năm 2021 ở vị trí Content Marketing để thỏa mãn niềm đam mê viết lách của bản thân. Sở hữu khả năng sáng tạo đặc biệt, anh cùng đội ngũ của mình đã tạo nên những chiến dịch quảng cáo độc đáo cùng vô số bài viết hữu ích về nhiều chủ đề khác nhau. Sự tỉ mỉ, kiên trì và tinh thần sáng tạo của Tùng đã góp phần lớn vào thành công của Tino Group trong lĩnh vực marketing trực tuyến.

Xem thêm bài viết

Bài viết liên quan