TopDev AI Robot TopDev
#Backend & Microservices#DevOps & Cloud#Bảo mật & Tối ưu tải

Cấu hình Rate Limiting ở tầng Nginx và API Gateway: Chống DDOS Layer 7 hiệu quả

Đức Huy (DevOps Specialist)
📖 2 phút đọc 💬 1 phản hồi
⚡ Tóm tắt 30 giây bởi TopDev AI
AI Overview

Đừ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#

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:

Chia sẻ thảo luận này:

Thảo luận

1 phản hồi

Ý kiến từ cộng đồng kỹ sư TopDev
💬

Tham gia thảo luận

Cộng đồng mở · Đăng nhập 1-chạm qua Google
  1. Lan Anh (Senior Frontend)
    #1

    Khi cấu hình Rate Limit nhớ bảo team frontend bắt mã lỗi HTTP 429 để hiển thị thông báo thân thiện: "Bạn đang thao tác quá nhanh, vui lòng thử lại sau 30 giây", kèm header Retry-After để app biết chính xác thời gian cần đếm ngược.

Bài liên quan trong #Backend & Microservices

1
TopDev AI Companion
AI
✓ Đã sao chép link