Link to original video by Anton Putra
Nginx vs Traefik Performance (Reverse Proxy)

Tóm tắt ngắn:
- Video so sánh hiệu năng của hai proxy ngược Nginx và Traefik, đo lường độ trễ (latency), thông lượng (throughput), tỷ lệ lỗi, sử dụng CPU, bộ nhớ và lưu lượng mạng của cả proxy và ứng dụng phía sau.
- Điểm mấu chốt: Nginx cho thấy hiệu năng vượt trội về độ trễ và thông lượng, đặc biệt khi bật keep-alive cho các kết nối phía sau. Traefik dễ cấu hình hơn nhưng đạt thông lượng thấp hơn và sử dụng CPU cao hơn. Video cũng đề cập đến việc Nginx cần cấu hình thủ công nhiều hơn Traefik, và Traefik tích hợp sẵn quản lý chứng chỉ TLS.
- Ứng dụng: Proxy ngược giúp cân bằng tải, nâng cấp ứng dụng không gián đoạn, tăng cường bảo mật và tối ưu hóa hiệu năng bằng cách tận dụng HTTP/2, nén dữ liệu và caching.
- Phương pháp: Video sử dụng AWS, các instance EC2, cụm EKS với Prometheus và Grafana để tạo tải và đo lường hiệu năng.
Tóm tắt chi tiết:
Phần 1: Giới thiệu Proxy Ngược
- Video bắt đầu bằng định nghĩa proxy ngược: một server nằm trước ứng dụng, định tuyến các request đến các instance ứng dụng phía sau.
- Chức năng chính: cân bằng tải (scale ứng dụng lên xuống tùy theo lưu lượng), nâng cấp ứng dụng không gián đoạn, kết thúc TLS ở proxy, giảm diện tích tấn công, caching và nén dữ liệu.
Phần 2: So sánh Nginx và Traefik
- Cấu hình: Nginx dùng file cấu hình tĩnh, Traefik có nhiều cơ chế phát hiện dịch vụ động (ví dụ: Docker Compose). Traefik tích hợp sẵn quản lý chứng chỉ TLS (Let's Encrypt), trong khi Nginx cần Certbot.
- Thống kê: Nginx thiếu thống kê chi tiết cho từng ứng dụng (chỉ có ở phiên bản trả phí), trong khi Traefik xuất thống kê ở định dạng Prometheus.
- Khả năng phục vụ nội dung tĩnh: Nginx có thể phục vụ cả nội dung tĩnh và làm proxy ngược, Traefik chỉ làm proxy ngược.
Phần 3: Thiết kế thử nghiệm
- Môi trường: AWS với instance EC2 (m7a.large cho proxy, instance medium cho ứng dụng), cụm EKS với Prometheus, Grafana và 20 pod để tạo tải.
- Công cụ: Terraform để quản lý hạ tầng, systemd để chạy proxy và ứng dụng.
Phần 4: Kết quả thử nghiệm
- Độ trễ (Latency): Nginx có độ trễ thấp hơn đáng kể so với Traefik, đặc biệt khi tải cao.
- Thông lượng (Throughput): Nginx đạt thông lượng cao hơn nhiều (40,000 req/s so với 17,000 req/s của Traefik).
- Sử dụng CPU: Traefik đạt 100% CPU nhanh hơn Nginx.
- Sử dụng bộ nhớ: Traefik caching nhiều hơn, dẫn đến tăng độ trễ.
- Tỷ lệ lỗi: Cả hai đều rất thấp (99.99% availability).
- Keep-alive: Video nhấn mạnh tầm quan trọng của keep-alive trong Nginx để cải thiện hiệu năng. "Nếu bạn đang sử dụng Nginx làm proxy ngược, hãy chắc chắn bật keep-alive – nó sẽ cải thiện đáng kể hiệu năng của Nginx."
- Lưu lượng mạng: Traefik ban đầu dùng nhiều hơn do header bổ sung, nhưng cuối cùng Nginx truyền nhiều dữ liệu hơn.
- Tải trên ứng dụng phía sau: Cao hơn ở Nginx do xử lý nhiều request hơn.
Phần 5: Kết luận
- Nginx có hiệu năng vượt trội hơn Traefik trong bài test này, đặc biệt về độ trễ và thông lượng. Tuy nhiên, Traefik dễ cấu hình hơn. Tác giả khuyến khích người xem thử cải thiện hiệu năng của Traefik và chia sẻ kết quả.
Video nhấn mạnh tầm quan trọng của việc lựa chọn proxy phù hợp dựa trên nhu cầu và hiệu năng mong muốn, đồng thời cho thấy việc tối ưu cấu hình (như bật keep-alive trong Nginx) có thể ảnh hưởng lớn đến hiệu năng.