1. 액세스 빈도, 동시 연결 및 다운로드 속도를 제한하는 데 사용되는 모듈 및 지침 개요
ngx_http_limit_req_module: Leaky Bucket 알고리즘을 사용하여 단위 시간당 요청 수, 즉 속도 제한을 제한하는 데 사용됩니다. "leaky bucket"
ngx_http_limit_conn_module: 동시에 연결 수, 즉 동시성 제한을 제한하는 데 사용됩니다.
limit_rate 및limit_rate_after: 다운로드 속도 설정
leaky bucket 알고리즘(leaky bucket)
알고리즘 아이디어는 다음과 같습니다.
물(요청)을 위에서 물통에 붓고 물통 바닥에서 흘러나옵니다(처리)
너무 늦게 흘러나오는 물을 저장합니다. 물통(버퍼)에 담아 일정한 속도로 흘러나옵니다.
물통이 가득 차면 물이 넘칩니다(버리세요).
이 알고리즘의 핵심은 요청을 캐싱하고 일정한 속도로 처리하며 중복된 요청을 직접 삭제하는 것입니다.
nginx 요청 속도별 속도 제한 모듈은 누출 버킷 알고리즘을 사용하여 요청의 실시간 처리 속도가 설정된 임계값을 초과하지 않도록 강제로 보장할 수 있습니다
2. URL 액세스 요청 빈도를 제한합니다.
http{ ... limit_req_zone $binary_remote_addr zone=one:30m rate=20r/s; limit_req_zone $binary_remote_addr $uri zone=two:30m rate=20r/s; limit_req_zone $binary_remote_addr $request_uri zone=three:30m rate=20r/s; limit_req_status 444; ... server{ ... limit_req zone=two burst=15 nodelay; ... } }
설명 :
limit_req_zone $binary_remote_addr zone=one:30m rate=20r/s;
$binary_remote_addr은 동일한 클라이언트 IP 주소를 다른 URL로 제한하는 것입니다
zone: zone 이름 1이 세션30을 저장합니다. 엠
rate : Every 초당 요청 수
limit_req_zone $binary_remote_addr $uri zone=two:30m rate=20r/s;
$binary_remote_addr $uri는 동일한 클라이언트 IP 주소를 same url
zone: zone 이름 2 Store session30m
rate: 초당 조건
limit_req_zone $binary_remote_addr $ Request_uri Zone = Three: 30m Rate = 20R/s의 동일한 클라이언트 IP 주소를 제한합니다. 동일 URL
zone: zone 이름 two 매장 세션 30m
rate: 초당 요청 수
limit_req zone=twoburst=15 nodelay;
zone 참조 영역은 2,
burst 크기가 15인 버퍼를 설정합니다. 요청(버스트)이 많이 올 때, 액세스가 위 제한을 초과하면 먼저 버퍼에 배치될 수 있습니다.
nodelay는 일반적으로 버스트와 함께 사용됩니다. nodelay를 설정하면 액세스 빈도를 초과하고 버퍼가 가득 차면 503이 직접 반환됩니다. 설정하면 모든 대규모 요청이 대기열에 추가됩니다. 동시 연결 수에 따라
http { ... limit_conn_log_level error; limit_conn_zone $binary_remote_addr zone=addr:10m; limit_conn_status 503; ... server { ... location /download/ { limit_conn addr 1; 单个客户端ip限制为1 } ... }사례 2:
http{ limit_conn_zone $binary_remote_addr zone=perip:10m; limit_conn_zone $server_name zone=perserver:10m; server { ... limit_conn perip 10; #单个客户端ip与服务器的连接数 limit_conn perserver 100; #限制与服务器的总连接数 } }
4 다운로드 속도 제한
location /download { limit_rate 128k; } #如果想设置用户下载文件的前10m大小时不限速,大于10m后再以128kb/s限速可以增加以下配内容 location /download { limit_rate_after 10m; limit_rate 128k; }.
위 내용은 Nginx를 사용하여 액세스 빈도, 다운로드 속도 및 동시 연결 수를 제한하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!