nginx 접속 층 제한 흐름

6559 단어 nginx
1. nginx 접속 층 제한 흐름
Nginx 접속 층 의 흐름 제한 에 대해 Nginx 자체 테이프 의 두 모듈 을 사용 할 수 있 습 니 다: 연결 수 제한 모듈(ngx http limit conn module 과 누 출 통 알고리즘 이 구현 하 는 요청 스 트림 모듈 ngx http limit req module. limit conn 은 특정한 key 에 대응 하 는 총 네트워크 연결 수 를 제한 하 는 데 사용 되 며 IP, 도 메 인 이름 차원 에 따라 스 트림 을 제한 할 수 있 습 니 다. limit req 는 특정한 key 에 대응 하 는 요청 의 평균 속 도 를 제한 하 는 데 사 용 됩 니 다. 두 가지 방법:
  • 부 드 러 운 모드 (delay):
  • 돌발 모드 허용 (nodelay)
  • 1.1 ngx_http_limit_conn_module
    limit conn 은 특정한 key 에 대응 하 는 총 네트워크 연결 수 를 제한 합 니 다. IP 에 따라 IP 차원 의 총 연결 수 를 제한 하거나 서비스 도 메 인 이름 에 따라 도 메 인 이름 의 총 연결 수 를 제한 할 수 있 습 니 다. 이 모듈 은 두 개의 설정 파 라미 터 를 제공 합 니 다. liit conn zone 과 limit conn 은 http {} 세그먼트 에 만 설정 할 수 있 고 limit conn 은 http {}, server {} 과 설정 할 수 있 습 니 다., location {} 구간 중.
    1.1.1 제3자 모듈 컴 파일 설치 매개 변수:
    # ./configure –prefix=/usr/local/nginx –-add-module=./nginx_limit_speed_module-master
    # make
      make    ,    make install                ,  ,         。
       /usr/local/nginx/sbin/nginx -V,  ngx_cache_purge      。

    1.1.2 ngx http limit req module 모듈 명령
    1.1.2.1 limit_req_zone
    문법: limit req zone $variable zone = name: size rate = rate; 기본 값: none 설정 세그먼트: http - $variable 정의 키 - zone = name 정의 영역 이름, 뒤의 limit conn 명령 은 - size: 각 키 공유 메모리 공간 크기 를 정의 합 니 다.
    limit_req_zone $binary_remote_addr zone=addr:10m rate=1r/s;

    클 라 이언 트 의 IP 주 소 를 키 로 합 니 다. remote addr 변 수 는 remoteaddr 변수 가 아 닌 binary remote addr 변 수 를 사용 합 니 다. - r e m o t e a d r 변 수 는 7 바이트 에서 15 바이트 까지 사용 합 니 다. 저장 상 태 는 32 비트 플랫폼 에서 32 바이트 나 64 바이트 로 64 비트 플랫폼 에서 64 바이트 입 니 다. - $binary remote addr 변 수 는 4 글자 로 고정 되 어 있 습 니 다.섹 션, 저장 상 태 는 32 비트 플랫폼 에서 32 바이트 또는 64 바 이 트 를 차지 하고 64 비트 플랫폼 에서 64 바 이 트 를 차지 합 니 다. 1M 공유 공간 은 32 비트, 1 만 6000 개의 64 비트 상 태 를 저장 할 수 있 습 니 다. 공유 메모리 공간 이 소 진 되면 서버 는 후속 모든 요청 에 대해 503 (Service Temporarily Unavailable) 오 류 를 되 돌려 줍 니 다.
    1.1.2.2 limit_conn_log_level
    문법: limit conn log level info | notice | warn | error 기본 값: error 설정 단계: http, server, location 최대 제한 연결 수 에 도달 하면 로그 의 등급 을 기록 합 니 다.
    1.1.2.3 limit_conn
    문법: limit conn zone name number 기본 값: none 설정 세그먼트: http, server, location 은 주어진 키 의 최대 동시 연결 수 를 지정 합 니 다. 이 숫자 를 초과 하면 503 으로 되 돌아 갑 니 다. 예 를 들 어
    limit_conn_zone $binary_remote_addr zone=addr:10m;
    server {
        location /www.ttlsa.com/ {
            limit_conn addr 1;
        }
    }

    같은 IP 같은 시간 에 하나의 연결 만 허용 합 니 다. 여러 limit conn 명령 이 설정 되 었 을 때 모든 연결 수 제한 이 적 용 됩 니 다. 예 를 들 어 아래 설정 은 단일 IP 소스 의 연결 수 를 제한 할 뿐만 아니 라 단일 가상 서버 의 총 연결 수도 제한 합 니 다.
    limit_conn_zone $binary_remote_addr zone=perip:10m;
    limit_conn_zone $server_name zone=perserver:10m;
    server {
        limit_conn perip 10;
        limit_conn perserver 100;
    }

    1.1.2.4 limit_conn_status
    문법: limit conn status code; 기본 값: limit conn status 503; 설정 세그먼트: http, server, location
    이 지정 은 1.3.15 버 전에 서 도입 되 었 습 니 다. 제한 을 초과 할 때 되 돌아 오 는 상태 코드 를 지정 합 니 다. 기본 값 은 503 입 니 다.
    1.1.2.5 limit_rate
    문법: limit rate 기본 값: 0 설정 세그먼트: http, server, location, if in location 은 모든 연결 의 속 도 를 제한 합 니 다. 매개 변수 rate 의 단 위 는 바이트 / 초 이 며 0 으로 설정 하면 속 도 를 제한 합 니 다. IP 제한 이 아 닌 연결 제한 속도 로 설정 합 니 다. 따라서 한 클 라 이언 트 가 두 개의 연결 을 동시에 열 면 클 라 이언 트 의 전체 속 도 는 이 명령 설정 값 의 2 배 입 니 다.。
    1.1.2.6 인 스 턴 스 버 전 완성
    http {
     limit_conn_zone $binary_remote_addr zone=limit:10m;
     limit_conn_log_level info;
    
     server {
     location  ^~ /download/ {  
         limit_conn limit 4;
         limit_rate 200k;
                    }
     }
    }

    1.1.2.7 limit conn 실행 프로 세 스
    1. 들 어 오 기 를 요청 한 후 현재 limit conn zone 에서 해당 key 의 연결 수가 설정 의 최대 연결 수 2 를 초과 하 는 지, 설정 의 최대 크기 를 초과 하면 흐름 이 제한 되 어 limit conn status 가 정의 한 오류 상태 코드 를 되 돌려 줍 니 다. 그렇지 않 으 면 해당 key 의 연결 수 에 1 을 추가 하고 요청 처리 가 완 료 된 리 셋 함 수 를 등록 합 니 다. 3. 요청 처리 4. 기술 요청 4.단계 호출 등 록 된 리 셋 함수 가 해당 키 의 연결 수 를 1 로 줄 입 니 다.
    1.2 ngx_http_limit_req_module
    limit req 는 누 통 알고리즘 이 실현 되 고 지정 한 key 에 대응 하 는 요청 을 제한 합 니 다. 예 를 들 어:
    limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
    
    server {
        ...
        location /limit {
            limit_req zone=one burst=5 nodelay;
        }
    

    매개 변수 설명:limit_req_zone:
  • $binary remote addr 는 remote addr 와 이 표 지 를 통 해 제한 을 표시 합 니 다. 이 키 는 IP 주 소 를 표시 합 니 다.
  • zone = one: 10 m 는 10M 크기 의 메모리 영역 을 생 성하 여 접근 빈도 정 보 를 저장 하 는 것 을 나타 낸다
  • rate: 고정 요청 속 도 는 rate 매개 변수 설정 을 사용 하여 10r / s 와 60r / m, 즉 초당 10 개의 요청 과 분당 60 개의 요청 을 지원 합 니 다. 그러나 최종 적 으로 초당 고정 요청 속도 로 전 환 됩 니 다.
  • limit_req:
  • zone = one 설정 은 어느 설정 구역 을 사용 하 는 지 제한 합 니 다. 위의 limit req zone 의 name 과 대응 합 니 다
  • burst: 5 크기 의 버퍼 를 설정 합 니 다. 대량의 요청 이 있 을 때 방문 빈도 제한 을 초과 한 요청 은 먼저 아 웅 다 를 보 낼 수 있 습 니 다. 이 버퍼 중
  • nodelay: 설정 하면 이 방문 횟수 를 초과 하고 버퍼 가 가득 찼 을 때 503 으로 돌아 갑 니 다. 설정 되 지 않 으 면 모든 요청 은 줄 을 기다 리 고 있 습 니 다
  • limit_req 의 주요 집행 과정 은 다음 과 같다.
  • 요청 이 들 어간 후 마지막 요청 시간 이 현재 시간 (첫 번 째 는 0) 에 비해 주요 한 흐름 제한 여 부 를 먼저 판단 하고 흐름 제한 이 필요 하 다 면 2 절 차 를 실행 하고 그렇지 않 으 면 실행 절차 3.
  • 통 용량 (burst) 이 설정 되 어 있 지 않 으 면 통 용량 은 0 이 고 고정 속도 로 요청 합 니 다. 요청 이 제한 되 어 있 으 면 응답 하 는 오류 코드 (기본 값 503) 를 되 돌려 줍 니 다. 통 용량 (burst > 0) 이 설정 되 어 있 으 면지연 모드, 통 이 느 리 면 새로 들 어 오 는 요청 이 제한 되 어 있 습 니 다. 가득 차지 않 으 면 요청 은 고정 평균 속도 로 처 리 됩 니 다. 통 용량 (burst > 0) 및 비 지연 모드 가 설정 되 어 있 으 면 고정 속도 로 요청 을 처리 하지 않 고 돌발 적 인 처 리 를 허용 합 니 다. 통 이 가득 차 면 요청 이 제한 되 어 있 으 면 해당 오류 코드 로 되 돌아 갑 니 다.
  • 제한 흐름 이 없 으 면 정상 처리
  • 좋은 웹페이지 즐겨찾기