Khi triển khai một ứng dụng web, việc giới hạn tốc độ truy cập và băng thông sử dụng là rất quan trọng để đảm bảo sự công bằng trong việc phục vụ các yêu cầu từ người dùng và tránh quá tải cho máy chủ. Nginx cung cấp các cơ chế cấu hình linh hoạt để giới hạn tốc độ truy cập và băng thông sử dụng. Trong bài viết này, chúng ta sẽ tìm hiểu cách cấu hình Nginx để thực hiện việc này.
Giới hạn tốc độ truy cập
Để giới hạn tốc độ truy cập, chúng ta có thể sử dụng module “limit_req” của Nginx. Module này cho phép chúng ta giới hạn số lượng yêu cầu mà một người dùng có thể thực hiện trong một khoảng thời gian nhất định.
Để cấu hình giới hạn tốc độ truy cập, chúng ta sử dụng directive “limit_req_zone” để định nghĩa vùng nhớ cho các giới hạn và directive “limit_req” để áp dụng giới hạn cho các yêu cầu.
Ví dụ, chúng ta có thể cấu hình Nginx để giới hạn tốc độ truy cập là 100 yêu cầu mỗi giây cho mỗi địa chỉ IP bằng cách thêm các dòng sau vào tệp cấu hình:
http {
limit_req_zone $binary_remote_addr zone=limit_zone:10m rate=100r/s;
server {
...
location / {
limit_req zone=limit_zone burst=10;
...
}
}
}
Trong ví dụ này, chúng ta đã định nghĩa một vùng nhớ “limit_zone” với dung lượng 10MB và tốc độ giới hạn 100 yêu cầu/giây. Trong block server, chúng ta áp dụng giới hạn bằng directive “limit_req” trong block location. Burst là số yêu cầu cho phép vượt quá tốc độ giới hạn trong một khoảng thời gian ngắn.
Giới hạn băng thông sử dụng
Để giới hạn băng thông sử dụng, chúng ta có thể sử dụng module “limit_rate” của Nginx. Module này cho phép chúng ta giới hạn tốc độ truyền dữ liệu từ máy chủ đến client.
Để cấu hình giới hạn băng thông, chúng ta sử dụng directive “limit_rate” trong block location. Giá trị của directive này là số byte mà Nginx sẽ gửi cho client trong một khoảng thời gian nhất định.
Ví dụ, chúng ta có thể cấu hình Nginx để giới hạn băng thông là 1MB/giây bằng cách thêm dòng sau vào tệp cấu hình:
http {
server {
...
location / {
limit_rate 1m;
...
}
}
}
Trong ví dụ này, chúng ta đã đặt giới hạn băng thông là 1MB/giây cho mọi yêu cầu được xử lý bởi block location.
Khởi động lại Nginx
Sau khi hoàn tất cấu hình, bạn cần khởi động lại Nginx để áp dụng thay đổi. Bạn có thể sử dụng lệnh sau để khởi động lại Nginx trên hệ điều hành Linux:
sudo service nginx restart
Qua bài viết này, chúng ta đã tìm hiểu cách cấu hình Nginx để giới hạn tốc độ truy cập và băng thông sử dụng. Việc giới hạn này giúp đảm bảo sự công bằng trong việc phục vụ yêu cầu từ người dùng và bảo vệ máy chủ khỏi quá tải. Nginx cung cấp các công cụ và tùy chọn cấu hình mạnh mẽ để điều chỉnh và tùy chỉnh việc giới hạn này theo nhu cầu của bạn.