>  기사  >  운영 및 유지보수  >  nginx가 요청 수를 처리하는 방법

nginx가 요청 수를 처리하는 방법

(*-*)浩
(*-*)浩원래의
2019-11-20 10:31:543174검색

nginx는 가볍고 강력하며 수백 번의 동시성을 견딜 수 있습니다. Ddos 공격은 nginx 자체의 작업에 거의 영향을 미치지 않지만 너무 많은 요청은 백엔드 서비스에 영향을 미치기 시작합니다.

따라서 공격이 백엔드 서버에 도달하는 것을 방지하려면 nginx에서 해당 제한을 적용해야 합니다. 여기서 설명하는 것은 단위 시간당 요청 수를 제한할 수 있는 ngx_http_limit_req_module 모듈입니다.

nginx가 요청 수를 처리하는 방법

여기서는 모듈을 설치하는 간단한 단계를 소개하지 않겠습니다. 구성 매개변수는 모두에게 유용할 것입니다. I. Nginx 제한 요청 번호 ngx_http_limit_req_module 모듈
(권장 학습:

Nginx 튜토리얼

) 키 값의 정의는 제한 매개변수입니다. http에 설정되어 있습니다.

limit_req_zone
구문:limit_req_zone$variablezone=이름:size rate=rate;

기본값:없음

구성 섹션: http

예:

limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;

설명: 영역 이름은 1, 크기는 10m, 처리되는 평균 요청 수는 초당 1개를 초과할 수 없습니다.

핵심 값은 클라이언트 IP입니다.

$binary_remote_addr 변수를 사용하면 각 상태 레코드의 크기를 64바이트로 줄일 수 있으므로 1M 메모리에 약 16,000개의 64바이트 레코드를 저장할 수 있습니다.

제한된 도메인의 저장 공간이 소진되면 서버는 이후의 모든 요청에 ​​대해 503(서비스를 일시적으로 사용할 수 없음) 오류를 반환합니다.

속도는 초당 처리되는 요청 수와 분당 처리되는 요청 수로 설정할 수 있으므로 값은 정수여야 하므로 초당 1개 미만, 2초에 1개 요청을 지정해야 하는 경우에는 "30r/m" 을 사용할 수 있습니다.

2. 원하는 로그 수준을 설정하세요.

limit_req_log

구문: 제한_req_log_level 정보 | 알림 | 오류;

기본값: 제한_req_log_level 오류;

구성 섹션: http, 서버, 위치

서버가 요청 처리를 거부하거나 지연할 때 기록할 수 있습니다. 빈도가 너무 높습니다. 해당 수준의 로그입니다. 지연된 로깅의 로그 수준은 거부된 로그 수준보다 한 수준 낮습니다. 예를 들어 "limit_req_log_level 통지"가 설정된 경우 지연된 로그는 정보 수준입니다.

3. 오류 반환 값을 설정합니다.

구문: ​​제한_req_status 코드;

기본값: 제한_req_status 503;

구성 섹션: http, 서버, 위치

이 지시문은 버전 1.3.15에서 도입되었습니다. 거부된 요청에 대한 응답 상태 코드를 설정합니다.

4. 해당 공유 메모리 제한 도메인과 처리할 수 있는 최대 요청 수를 설정합니다.

구문: ​​Limit_req zone=name [burst=number] [nodelay];

기본값: —

구성 섹션: http, server, location

limit_req_zone $binary_remote_addr zone=ttlsa_com:10m rate=1r/s;
server {
    location /www.ttlsa.com/ {
        limit_req zone=ttlsa_com burst=5;
    }
}

평균적으로 초당 요청을 1개 이하로 제한하고 허용합니다. 동시에 2개 이상의 요청이 가능합니다. 요청 수는 5개 이하로 제한됩니다.

더 이상 요청이 지연되는 것을 원하지 않으면 다음과 같은 nodelay 매개변수를 사용할 수 있습니다.

limit_req zone=ttlsa_com burst=5 nodelay;

위 내용은 nginx가 요청 수를 처리하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.