Cloudflare Tunnel và Nginx: đưa website từ máy cá nhân lên internet an toàn
Bạn có một website chạy trên chiếc máy ở nhà hoặc máy chủ không có địa chỉ IP tĩnh. Mở cổng trên router là rủi ro bảo mật và phụ thuộc vào ISP. Cloudflare Tunnel loại bỏ hoàn toàn vấn đề này: kết nối ra từ máy của bạn, không cần mở bất kỳ cổng nào.
Vì sao Tunnel thay thế port forwarding
Port forwarding phơi bày service của bạn ra internet — các scanner quét cổng 24/7 sẽ tìm thấy nó. Tunnel chỉ mở một kết nối TCP ngược ra biên Cloudflare, nên không có cổng nào mở trên router, không cần IP tĩnh, không cần chỉnh firewall.
Luồng hoạt động đơn giản: cloudflared trên máy bạn kết nối tới biên Cloudflare → người dùng truy cập qua Cloudflare → yêu cầu được chuyển qua kênh bảo mật về chính máy bạn.
Cấu hình cơ bản
Cài cloudflared và tạo tunnel:
cloudflared tunnel login
cloudflared tunnel create chuanweb-tunnel
# Tạo token tunnel rồi khai báo ingress trong config
File cấu hình /etc/cloudflared/config.yml:
tunnel: chuanweb-tunnel
credentials-file: /root/.cloudflared/<tunnel-id>.json
ingress:
- hostname: chuanweb.com
service: http://localhost:8000
- hostname: www.chuanweb.com
service: http://localhost:8000
- service: http_status:404
Chạy như một dịch vụ systemd:
cloudflared service install
systemctl start cloudflared
Kết hợp với Nginx phía sau
Nginx đứng trước ứng dụng đóng vai trò proxy ngược, phục vụ file tĩnh, nén và áp HTTPS. Tunnel chỉ cần trỏ vào cổng của Nginx:
server {
listen 8000;
server_name chuanweb.com www.chuanweb.com;
root /var/www/chuanweb/dist;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
Phần bảo mật (HTTP/2, SSL) thường do Cloudflare đảm nhận — mọi kết nối qua trình duyệt đều được mã hóa tới biên Cloudflare, còn segment tới máy bạn nằm trong kênh tunnel riêng.
Điểm cần lưu ý
- Khai báo thêm hostname mới trong ingress thì restart cloudflared để biên Cloudflare nhận route.
- Kiểm tra bằng
curl --noproxy '*'để tránh cache DNS/máy chủ proxy làm kết quả sai lệch. - Nếu website không cần thay đổi động, đặt thời lượng cache dài cho ảnh và CSS để giảm tải máy nguồn.
Kết luận
- Cloudflare Tunnel thay thế port forwarding an toàn và ổn định hơn hẳn, không cần IP tĩnh.
- Kết hợp cùng Nginx cho phép dùng lại toàn bộ kỹ thuật proxy, cache mà bạn đã quen.
- Service chạy hệ thống tự khởi động lại — website sống liên tục kể cả khi máy nguồn đổi IP.