Hạ Tầng & Quản Trị Hệ Thống
XÂY DỰNG HỆ THỐNG LOAD BALANCING & REVERSE PROXY VỚI NGINX TRÊN eCLOUD VPS
Tối ưu khả năng chịu tải, mở rộng Scale-Out và bảo mật hạ tầng Backend chuyên nghiệp
1. Giới thiệu tổng quan
Khi website doanh nghiệp hoặc hệ thống thương mại điện tử phát triển vượt ngưỡng đáp ứng của một máy chủ đơn lẻ, mô hình mở rộng theo chiều ngang (Scale-Out) trở thành giải pháp bắt buộc. Bằng cách sử dụng một máy chủ eCloud VPS làm tầng cổng giao tiếp Reverse Proxy trung gian, quản trị viên có thể phân phối lưu lượng truy cập đồng đều tới nhiều máy chủ xử lý phía sau (Backend/Upstream Servers).
Mô hình này đem lại 3 giá trị kỹ thuật cốt lõi:
- Khả năng chịu lỗi và tính sẵn sàng cao (High Availability): Tự động phát hiện và cô lập máy chủ backend bị lỗi mà không làm gián đoạn trải nghiệm người dùng.
- Ẩn giấu hạ tầng backend (Security Shield): Khách hàng chỉ tương tác với IP Public của Reverse Proxy, IP thật của các cụm máy chủ ứng dụng và cơ sở dữ liệu được giấu hoàn toàn trong mạng nội bộ.
- Giảm tải xử lý (SSL Offloading & FastCGI/Microcaching): Tập trung giải mã mã hóa SSL/TLS và lưu bộ đệm tĩnh tại máy chủ proxy, giải phóng tài nguyên CPU/RAM cho máy chủ ứng dụng.
2. Mô Hình Kiến Trúc Triển Khai
Giả định kịch bản hạ tầng triển khai trên cụm máy chủ ảo eCloud VPS của ESC:
- Nginx Load Balancer (Proxy):
10.0.0.10(Sở hữu IP Public trỏ tên miềntenmien.vn) - Backend Node 01 (Web App 1):
10.0.0.11:8080(Mạng nội bộ) - Backend Node 02 (Web App 2):
10.0.0.12:8080(Mạng nội bộ) - Backend Backup Node:
10.0.0.13:8080(Dự phòng khẩn cấp khi cả 2 node chính quá tải hoặc sập)
3. Cấu Hình Cân Bằng Tải Nâng Cao Trên Nginx Proxy
Mở hoặc tạo mới file cấu hình virtual host trên máy chủ proxy:
3.1. Thiết lập khối upstream với thuật toán điều phối
Nginx hỗ trợ nhiều thuật toán phân phối tải tùy theo đặc thù dịch vụ:
- Round Robin (mặc định): Phân chia lần lượt theo vòng tròn.
- Least Connections (least_conn): Chuyển tiếp request đến server đang xử lý ít kết nối nhất (khuyên dùng cho ứng dụng tải nặng).
- IP Hash (ip_hash): Cố định một IP người dùng vào cùng một backend server (giữ trạng thái Session).
Cấu hình mẫu tối ưu kết hợp trọng số (Weight) và kiểm tra tình trạng kết nối:
upstream backend_cluster {
least_conn; # Ưu tiên chuyển vào node có tải kết nối thấp nhất
# Node 1: Cấu hình mạnh hơn, gán trọng số 3 (nhận 60% lưu lượng)
server 10.0.0.11:8080 weight=3 max_fails=3 fail_timeout=15s;
# Node 2: Cấu hình cơ bản, gán trọng số 2 (nhận 40% lưu lượng)
server 10.0.0.12:8080 weight=2 max_fails=3 fail_timeout=15s;
# Node dự phòng: Chỉ kích hoạt khi cả Node 1 và Node 2 không phản hồi
server 10.0.0.13:8080 backup;
# Duy trì kết nối Keepalive để giảm độ trễ TCP handshake
keepalive 32;
}3.2. Cấu hình khối Server, SSL Offloading và chuyển tiếp Header
Khi Reverse Proxy đảm nhiệm việc giải mã SSL, các backend phía sau chỉ cần chạy HTTP nội bộ để tối ưu tốc độ:
server {
listen 80;
server_name tenmien.vn www.tenmien.vn;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
server_name tenmien.vn www.tenmien.vn;
# Chứng chỉ SSL cài đặt tập trung tại Proxy (Let's Encrypt hoặc Commercial SSL)
ssl_certificate /etc/ssl/esc_certs/fullchain.crt;
ssl_certificate_key /etc/ssl/esc_certs/private.key;
ssl_protocols TLSv1.2 TLSv1.3;
location / {
proxy_pass http://backend_cluster;
# Bắt buộc chuyển tiếp đầy đủ Header thực của Client về cho Backend phân tích
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;
# Thiết lập phiên HTTP/1.1 và xóa header Connection để tận dụng Keepalive
proxy_http_version 1.1;
proxy_set_header Connection "";
# Tinh chỉnh Timeout kết nối tới Backend
proxy_connect_timeout 5s;
proxy_send_timeout 15s;
proxy_read_timeout 15s;
# Xử lý tự động chuyển node nếu node hiện tại trả về mã lỗi 5xx
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
}
}4. Thiết Lập Bộ Đệm Caching Tập Trung (Proxy Microcaching)
Để tăng tốc độ tải trang lên hàng chục lần và giảm tải trực tiếp cho các máy chủ backend, ta thiết lập bộ nhớ đệm trang tĩnh và API tạm thời ngay trên ổ SSD NVMe của Proxy:
4.1. Khởi tạo vùng lưu cache trong nginx.conf
Mở file /etc/nginx/nginx.conf, thêm dòng sau vào trong khối http { ... }:
4.2. Áp dụng Cache vào Virtual Host
Mở lại /etc/nginx/conf.d/loadbalancer.conf và điều chỉnh trong khối location /:
location / {
proxy_cache PAGECACHE;
proxy_cache_valid 200 301 302 5m; # Cache kết quả hợp lệ trong 5 phút
proxy_cache_valid 404 1m; # Cache trang không tìm thấy trong 1 phút
proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504;
# Bỏ qua Cache đối với các trang quản trị hoặc giỏ hàng
proxy_cache_bypass $http_pragma $http_authorization $cookie_nocache;
proxy_no_cache $http_pragma $http_authorization $cookie_nocache;
# Thêm Header phản hồi để debug trạng thái Cache (HIT/MISS/BYPASS)
add_header X-Cache-Status $upstream_cache_status;
proxy_pass http://backend_cluster;
# ... (Các cấu hình proxy_set_header giữ nguyên)
}Kiểm tra cú pháp và khởi động lại Nginx:
5. Cấu Hình Backend Nhận Diện IP Thật Của Khách Hàng (Real IP)
Vì toàn bộ request đến máy chủ backend đều bắt nguồn từ IP của Reverse Proxy (10.0.0.10), file log và phần mềm bảo vệ (như Fail2ban, phân tích truy cập) trên Backend sẽ ghi nhận nhầm IP của Proxy. Cần cấu hình module Real IP trên máy chủ Backend.
Nếu máy chủ Backend dùng Nginx:
Mở /etc/nginx/nginx.conf trên các máy Backend, thêm vào khối http { ... }:
real_ip_header X-Forwarded-For;
real_ip_recursive on;
Nạp lại cấu hình: sudo systemctl reload nginx
Nếu máy chủ Backend dùng Apache:
Kích hoạt module remoteip:
Mở file cấu hình Apache và thêm:
RemoteIPInternalProxy 10.0.0.10
6. Giám Sát Và Chẩn Đoán Trạng Thái Cụm Cân Bằng Tải
| Nhu cầu chẩn đoán | Câu lệnh kiểm tra chuẩn | Mục tiêu |
|---|---|---|
| Kiểm tra trạng thái Cache | curl -I https://tenmien.vn | Quan sát header X-Cache-Status: HIT (đã nạp từ cache) hoặc MISS. |
| Theo dõi tải trên Proxy | sudo tail -f /var/log/nginx/access.log | Xem lưu lượng request đi qua máy chủ cân bằng tải thời gian thực. |
| Kiểm tra phân bổ Backend | Định dạng log thêm biến $upstream_addr | Xác định request thực tế đang rẽ nhánh vào Node 10.0.0.11 hay 10.0.0.12. |
7. Kênh Tiếp Nhận Hỗ Trợ Kỹ Thuật 24/7/365 tại ESC.VN
Trong trường hợp doanh nghiệp cần thiết kế kiến trúc cân bằng tải phần cứng độc lập, thiết lập cụm máy chủ chia sẻ Storage SAN/NFS hoặc chống tấn công DoS/DDoS tầng mạng diện rộng, đội ngũ kỹ sư hạ tầng của ESC luôn sẵn sàng đồng hành:
- 📞 Tổng đài Hỗ trợ Kỹ thuật 24/7: 1900 2069
- ☎️ Hotline trực ban: TP.HCM: (028) 71 099 199 | Hà Nội: (024) 39 42 68 96
- 🎫 Gửi yêu cầu hỗ trợ (Ticket): esc.vn/support-esc hoặc cổng quản trị khachhang.esc.vn
- 🌐 Website chính thức: https://esc.vn



![[CẢNH BÁO AN NINH MẠNG] BÁO ĐỘNG CHIẾN DỊCH QUÉT TÌM LỖ HỔNG CHÈN WEB SHELL & DÒ QUÉT CỔNG MÁY CHỦ DOANH NGHIỆP](/api/images/40/png/wp-content/uploads/2026/09/Gemini_Generated_Image_lhrzgclhrzgclhrz.webp)





