Bạn Tìm Gì Hôm Nay ...?
Tất cả đều có chỉ trong 1 nốt nhạc !
Nếu cần hỗ trợ chi tiết gọi 1900 9477
Việc giới hạn số lượng request của một client trong một khoảng thời gian sẽ giảm được rủi ro server bị tấn công DDoS. Bạn tính toán với trang web của mình một người dùng bình thường sẽ không thực hiện quá 1 request trong vòng 2 giây (tương đương 30 request trong 1 phút ) còn nếu quá thì chắc chắn người dùng này đang có hành động bất thường. Như vậy ta sẽ giới hạn số request cho một client trong 1 phút chỉ có thể thực hiện tối đa 30 request.
Bạn có thể tham khảo hướng dẫn SSH tới VPS/Server tại link: https://kb.pavietnam.vn/ssh-toi-server-linux-bang-putty.html
Để làm được việc này trước tiên bạn cần có một server đã cài nginx.
Mở file nginx.conf
vi /etc/nginx/nginx.conf
Thêm dòng sau vào block http {}
limit_req_zone $binary_remote_addr zone=one:10m rate=30r/m;
File nginx.conf
sẽ như sau
[root@nginx-lab ~]# cat /etc/nginx/nginx.conf
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
keepalive_timeout 65;
include /etc/nginx/conf.d/*.conf;
limit_req_zone $binary_remote_addr zone=one:10m rate=30r/m;
}
Ở đây sẽ tạo ra một vùng nhớ có tên là one
có dung lượng 10MB
để lưu trữ trạng thái của request theo kiểu key-value (trong trường hợp này là địa chỉ của client). rate
để chỉ ra số request giới hạn là 30 request trong thời gian 1 phút. Tương đương với 0,5 request mỗi giây nhưng vì không được phép để là 0,5 nên ta để là 30 request mỗi phút.
Bây giờ bạn muốn giới hạn request có hiệu lực ở đâu thì bạn đặt limit_req zone=one;
trong các block đó. Nếu bạn muốn nó áp dụng cho tất cả các trang web trên nginx này thì bạn đặt trong block http {}
, nếu muốn áp dụng cho cả một trang web thì đặt trong block server {}
, còn muốn giới hạn trên một số màn xác định thì đặt nó trong block location {}
.
Trong bài này tôi đặt nó trong block location {}
location / {
limit_req zone=one;
proxy_pass http://10.10.35.123;
}
Kiểm tra
[root@nginx-lab ~]# cat /etc/nginx/conf.d/demo.pavietnam.vn.conf
server {
server_name demo.pavietnam.vn;
location / {
limit_req zone=one;
proxy_pass http://10.10.35.123;
}
}
Reload lại nginx
nginx -s reload
Bây giờ truy cập vào trang web
Tôi nhấn F5
để load lại trang web khi chưa đến 2s
========================================
P.A Việt Nam cung cấp đa dạng các cấu hình Máy Chủ Ảo và Máy Chủ Riêng
Cloud Server
Cloud Server Pro
Máy Chủ Riêng
Tham khảo các ưu đãi: https://www.pavietnam.vn/vn/tin-khuyen-mai/