세 가지 nginx 제한 흐름 방식

1566 단어
nginx 공식 문 서 를 통 해 동생 은 세 가지 nginx 제한 방식 을 보 았 습 니 다.
1、limit_conn_zone
2、limit_req_zone
3、ngx_http_upstream_module
앞의 두 가 지 는 클 라 이언 트 (즉 단일 ip 제한) 에 만 있 을 수 있 고 문서 도 완전 하지만 테스트 를 통 해 공식 문서 가 말 한 결과 에 이 르 지 못 한 것 으로 나 타 났 다 (동생 의 테스트 방법 에 문제 가 있 을 수 있 음).
여기 서 먼저 앞의 두 가 지 를 간단하게 소개 합 니 다.
1、limit_conn_zone
1.1nginx 설정
 
http{
    limit_conn_zone $binary_remote_addr zone=one:10m;
    server
    {
         ......
        limit_conn   one  10;
        ......
    }
}

그 중에서 'limit conn one 10' 은 server 층 에 두 면 전체 server 에 효과 가 있 을 뿐만 아니 라 location 에 두 면 단독 location 에 만 효과 가 있 습 니 다.
 
이 설정 은 클 라 이언 트 의 병렬 연결 수 는 10 개 에 불과 하 다 는 것 을 나타 낸다.
2.2 결과
 
ab 도구 20 동시 요청 nginx, 볼 수 있 습 니 다.
Complete requests: 20
Failed requests: 9
(nginx 설정 의 ip 병렬 연결 수가 10 이 고 결과 의 성공 수가 + 1 인 이 유 는 알 수 없습니다. nginx 로그 에서 도 9 개의 요청 이 503 으로 돌아 가 는 것 을 볼 수 있 습 니 다)
2、limit_req_zone
2.1 nginx 설정
 
http{
    limit_req_zone  $binary_remote_addr  zone=req_one:10m rate=1r/s;
    server
    {
         ......
        limit_req   zone=req_one  burst=120;
        ......
    }
}

그 중에서 'limit req zone = req one burst = 120' 은 server 층 에 두 면 전체 server 에 효과 가 있 을 뿐만 아니 라 location 에 두 면 단독 location 에 만 효과 가 있 습 니 다.
 
 
rate = 1r / s 는 주소 당 1 초 에 한 번 만 요청 할 수 있다 는 뜻 입 니 다. 즉, 토 큰 통 burst = 120 에 모두 120 개의 토 큰 이 있 고 매 초 에 1 개의 토 큰 만 추가 되 었 습 니 다.
120 개의 토 큰 을 보 내 면 더 많은 요청 이 503 으로 돌아 갑 니 다.
 
 

좋은 웹페이지 즐겨찾기