Cấu hình Rate Limiting ở tầng Nginx và API Gateway: Chống DDOS Layer 7 hiệu quả
Đừng để backend của bạn phải hứng chịu những đợt spam request Một kẻ tấn công hoặc một con bot cào dữ liệu scraper có thể gửi hàng ngàn request mỗi giây vào endpoint đăng nhập /api/login hoặc endpoin…
☰ Mục lục bài viết (4 phần) Mở / Đóng mục lục
Đừng để backend của bạn phải hứng chịu những đợt spam request#
Một kẻ tấn công hoặc một con bot cào dữ liệu (scraper) có thể gửi hàng ngàn request mỗi giây vào endpoint đăng nhập (/api/login) hoặc endpoint tìm kiếm (/api/search).
Nếu bạn để những request này chạm tới tầng ứng dụng backend và database, server của bạn sẽ nhanh chóng bị nghẽn connection pool và sập.
Giải pháp chặn đứng nguy cơ này ngay tại cửa ngõ là cấu hình Rate Limiting bằng thuật toán Leaky Bucket trên Nginx.
Cấu hình Limit Request trong Nginx#
# 1. Định nghĩa vùng nhớ lưu trữ trạng thái rate limit theo IP client
# 10m (10 Megabytes) đủ lưu trữ trạng thái của 160.000 địa chỉ IP
limit_req_zone $binary_remote_addr zone=api_limit:10m rate=10r/s;
limit_req_zone $binary_remote_addr zone=login_limit:10m rate=2r/s;
server {
listen 80;
server_name api.topdev.com.vn;
# Endpoint công cộng: Cho phép 10 request/giây, burst tối đa 20 request
location /api/ {
limit_req zone=api_limit burst=20 nodelay;
limit_req_status 429; # Trả về chuẩn HTTP 429 Too Many Requests
proxy_pass http://backend_cluster;
}
# Endpoint nhạy cảm (Đăng nhập, Quên mật khẩu): Giới hạn nghiêm ngặt
location /api/auth/login {
limit_req zone=login_limit burst=5;
limit_req_status 429;
proxy_pass http://backend_cluster;
}
}
Giải thích tham số quan trọng: burst và nodelay#
rate=10r/s: Tốc độ trung bình cho phép (1 request mỗi 100ms).burst=20: Cho phép một đợt tăng đột biến (traffic spike) tối đa 20 request được xếp hàng chờ xử lý thay vì bị từ chối ngay lập tức.nodelay: Các request trong hàng đợi burst được thực thi ngay lập tức mà không phải chờ đợi nhân tạo, mang lại trải nghiệm nhanh cho người dùng thật.
Góc thảo luận#
Hệ thống của bạn đang giới hạn tần suất gọi API ở tầng nào? Nginx, Cloudflare WAF hay middleware trong ứng dụng backend?
Xem thêm nội dung liên quan:
Thảo luận
1 phản hồi
Tham gia thảo luận
Bài liên quan trong #Backend & Microservices
-
Áp dụng Model Context Protocol (MCP) của Anthropic để kết nối AI với Postgres và Docker
Hoàng Nam (Tech Lead) · 💬 1 -
So sánh mô hình Embedding đa ngữ: OpenAI text-embedding-3 vs BGE-M3 vs Cohere
Minh Trí (AI Engineer) · 💬 1 -
Xây dựng Voice AI Agent thời gian thực với WebRTC và Whisper Live: Độ trễ dưới 500ms
Lan Anh (Senior Frontend) · 💬 1 -
Tokenization tiếng Việt của các LLM: Tại sao chi phí tiếng Việt đắt gấp 3 lần tiếng Anh?
Minh Trí (AI Engineer) · 💬 1 -
Phân vùng bảng (Table Partitioning) trong PostgreSQL theo thời gian: Khi nào nên bắt đầu?
Thu Trang (Backend Engineer) · 💬 1