nginx 제한 연결 수 ngxhttp_limit_conn_모듈 모듈

1. 앞에서 말 했 듯 이 우 리 는 이런 상황 을 자주 만 날 수 있다. 서버 트 래 픽 이 이상 하고 부하 가 너무 많다 는 등 이다.대 유량 의 악의 적 인 공격 방문 은 대역 폭 의 낭 비 를 가 져 오고 서버 의 압력 을 가 져 오 며 업무 에 영향 을 주 며 같은 ip 의 연결 수, 병발 수 를 제한 하 는 것 을 고려한다.다음은 ngxhttp_limit_conn_module 모듈 로 이 수 요 를 실현 합 니 다.이 모듈 은 정 의 된 키 에 따라 모든 키 의 연결 수 를 제한 할 수 있 습 니 다. 마치 IP 소스 의 연결 수 와 같 습 니 다.모든 연결 이 이 모듈 에 의 해 계산 되 는 것 은 아 닙 니 다. 처리 되 고 있 는 요청 (요청 한 헤더 정보 가 완전히 읽 혔 습 니 다) 이 있 는 연결 만 계산 할 수 있 습 니 다.
2. ngxhttp_limit_conn_module 명령 해석 limitconn_zone 문법: limitconn_zone $variable zone=name:size;기본 값: none 설정 세그먼트: http 이 명령 은 세 션 상태 저장 영역 을 설명 합 니 다.키 의 상태 에 현재 연결 수 를 저장 합 니 다. 키 의 값 은 특정 변수의 비 어 있 는 값 일 수 있 습 니 다. (빈 값 은 고려 되 지 않 습 니 다) $variable 정의 키, zone = name 정의 영역 이름, 뒤의 limitconn 명령 이 사 용 될 겁 니 다.size 는 각 키 의 공유 메모리 공간 크기 를 정의 합 니 다.예:
?
1 limit_conn_zone $binary_remote_addr zone=addr:10m;
설명: 클 라 이언 트 의 IP 주 소 를 키 로 합 니 다.주의 하 세 요. 여 기 는 $biary 를 사용 합 니 다.remote_addr 변 수 는 $remote 가 아 닙 니 다.addr 변수 입 니 다. $remote_addr 변수의 길 이 는 7 바이트 에서 15 바이트 이 고 저장 상 태 는 32 비트 플랫폼 에서 32 바이트 또는 64 바이트 를 차지 하 며 64 비트 플랫폼 에서 64 바이트 를 차지 합 니 다. $binary_remote_addr 변수의 길 이 는 고정된 4 바이트 이 고 저장 상 태 는 32 비트 플랫폼 에서 32 바이트 나 64 바이트 를 차지 하 며 64 비트 플랫폼 에서 64 바이트 를 차지한다.1M 공유 공간 은 32 비트 상태 3 만 2 천 개, 64 비트 상태 1 만 6 천 개 를 저장 할 수 있다.공유 메모리 공간 이 소 진 되면 서버 는 후속 모든 요청 에 503 (Service Temporarily Unavailable) 오 류 를 되 돌려 줍 니 다.limit_zone 명령 과 limitconn_zone 명령 은 같은 뜻 으로 이미 버 려 졌 으 니 더 이상 설명 하지 않 겠 습 니 다.
limit_conn_log_level 문법: limitconn_log_level info | notice | warn | error 기본 값: error 설정 단계: http, server, location 최대 제한 연결 수 에 도달 하면 로그 의 등급 을 기록 합 니 다.
limit_conn 문법: limitconn zone_name number 기본 값: none 설정 세그먼트: http, server, location 은 주어진 키 의 최대 동시 연결 수 를 지정 합 니 다. 이 숫자 를 초과 할 때 503 (Service Temporarily Unavailable) 오 류 를 되 돌려 줍 니 다.예:
?
1
2
3
4
5
6 limit_conn_zone $binary_remote_addr zone=addr:10m; server { location /www .ttlsa.com/ {
limit_conn addr 1;
}
}
같은 IP, 같은 시간 에 한 개의 연결 만 허용 합 니 다.여러 limitconn 명령 이 설정 되 었 을 때 모든 연결 수 제한 이 적 용 됩 니 다.예 를 들 어 아래 설정 은 단일 IP 소스 의 연결 수 를 제한 할 뿐만 아니 라 단일 가상 서버 의 총 연결 수도 제한 합 니 다.
?
1
2
3
4
5
6 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;
}
limit_conn 명령 은 상부 에서 물 려 받 을 수 있다.
limit_conn_status 문법: limitconn_status code;기본 값: limitconn_status 503;설정 세그먼트: http, server, location 은 1.3.15 버 전에 서 도입 할 것 을 지정 합 니 다.제한 을 초과 할 때 되 돌아 오 는 상태 코드 를 지정 합 니 다.기본 값 은 503.
limit_rate 문법: limitrate rate 기본 값: 0 설정 세그먼트: http, server, location, if in location 은 모든 연결 속도 에 제한 을 줍 니 다.매개 변수 rate 의 단 위 는 바이트 / 초 이 며 0 으로 설정 하면 제한 속 도 를 닫 습 니 다.IP 로 제한 하 는 것 이 아니 라 연결 속도 에 따라 제한 합 니 다. 따라서 특정한 클 라 이언 트 가 두 개의 연결 을 동시에 열 면 클 라 이언 트 의 전체 속 도 는 이 명령 설정 값 의 2 배 입 니 다.
3. 전체 인 스 턴 스 설정
?
1
2
3
4
5
6
7
8
9
10
11
12 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;
alias /data/www .ttlsa.com /download/ ;
}
}
}
4. 사용 주의사항 은 모두 양면성 을 가진다.ngx_http_limit_conn_module 모듈 은 현재 직면 하고 있 는 병발 문 제 를 해결 할 수 있 지만 다른 문 제 를 도입 할 것 입 니 다.예 를 들 어 전단 에 LVS 나 반 대 를 하 는 것 이 있 고 우리 백 엔 드 에서 이 모듈 기능 을 사용 하면 503 오류 가 매우 많 지 않 습 니까?이렇게 하면 전단 에서 이 모듈 을 사용 하거나 화이트 리스트 를 설정 하거나 화이트 리스트 설정 은 후속 문 서 를 참고 하여 독자 들 이 참고 할 수 있 도록 정리 할 수 있 습 니 다.ngxhttp_limit_req_module 모듈 을 결합 하여 사용 하면 가장 좋 은 효 과 를 얻 을 수 있 습 니 다.'nginx 제한 요청 수 ngx http limit req module 모듈'.

좋은 웹페이지 즐겨찾기