- Published on
So sánh chi tiết NGINX, HAProxy và OpenResty
- Authors
- Name
- Bạch Đăng Tuấn
- Occupation
- Kỹ sư công nghệ thông tin
- Zalo: 0934.01.07.04
📑 Mục Lục
1. Giới thiệu
NGINX, HAProxy và OpenResty là ba giải pháp cân bằng tải phổ biến được sử dụng rộng rãi trong kiến trúc hệ thống hiện đại. Mỗi công cụ có một thế mạnh riêng, phục vụ các nhu cầu khác nhau từ cân bằng tải thuần túy đến xử lý logic tùy biến bằng Lua.
2. So sánh tổng quan
Tiêu chí | NGINX | HAProxy | OpenResty |
---|---|---|---|
Ngôn ngữ chính | C | C | C + Lua |
Mục đích ban đầu | Web Server + Reverse Proxy | Load Balancer | Web App Platform on NGINX |
Hiệu suất | Cao | Rất cao | Cao |
Cân bằng tải (LB) | Có (HTTP, TCP, UDP) | Rất mạnh (HTTP, TCP, UDP) | Có (qua NGINX) |
Hỗ trợ scripting | Giới hạn (nghèo nàn) | Không | Lua mạnh mẽ |
Mức tùy biến | Trung bình | Thấp | Rất cao (qua Lua) |
TLS termination | Có | Có | Có |
Hỗ trợ health check | Cơ bản | Mạnh mẽ và chi tiết | Dựa vào NGINX + Lua |
Metrics tích hợp | Hạn chế, cần VTS/Exporter | Có Prometheus native | Có thể viết Lua push metrics |
3. So sánh tính năng
Tính năng | NGINX | HAProxy | OpenResty |
---|---|---|---|
Round Robin LB | ✅ | ✅ | ✅ (qua upstream block) |
Least Connections | ✅ | ✅ | ✅ |
Weighted LB | ✅ | ✅ | ✅ |
Sticky Session | ⚠️ (phức tạp) | ✅ | ✅ (viết Lua được) |
HTTP/2 | ✅ | ✅ (giới hạn) | ✅ (qua NGINX) |
Dynamic reconfiguration | ❌ (reload) | ✅ (runtime API) | ⚠️ (viết Lua phức tạp) |
Lua scripting | ❌ | ❌ | ✅ |
Custom logic routing | ❌ | ❌ | ✅ (Lua cực mạnh) |
Tích hợp với Prometheus | ❌ (VTS) | ✅ (native) | ⚠️ (cần viết Lua hoặc exporter) |
Khả năng mở rộng plugin | Giới hạn | Không | Cao (Lua modules) |
4. Tình huống sử dụng thực tế
HAProxy:
- Load balancer TCP cho Redis, PostgreSQL, MySQL.
- Reverse Proxy HTTP với khả năng quản lý connections cực tốt.
- Làm LB chính giữa frontend và backend trong microservices.
NGINX:
- Làm web server kiêm reverse proxy.
- Cân bằng tải đơn giản HTTP/HTTPS.
- Giao tiếp SSL termination + cache static.
OpenResty:
- Xử lý API Gateway với Lua.
- Làm WAF (Web Application Firewall).
- Tùy biến kiểm tra JWT, session, chống bot, hạn chế IP truy cập.
5. Kết luận & Khuyến nghị
Mục đích sử dụng | Gợi ý lựa chọn |
---|---|
Cân bằng tải TCP hiệu suất cao | 🟢 HAProxy |
Cân bằng tải HTTP cơ bản | 🟢 NGINX hoặc HAProxy |
Viết logic tùy biến cao | 🟢 OpenResty |
Cần config động & kiểm soát runtime | 🟢 HAProxy |
Xử lý API Gateway nâng cao | 🟢 OpenResty |
⚠️ Mỗi công cụ đều có ưu và nhược điểm riêng. Lựa chọn tốt nhất là dựa trên yêu cầu cụ thể, khả năng mở rộng và năng lực đội ngũ triển khai.