Nginx 제어 병렬 연결 수 및 단순 cc 공격, ddos 공격 예방

5210 단어 Centos 조작Nginx
Nginx 는 러시아의 프로그래머 Igor Sysoev 가 개발 한 경량급 웹 서버 로 최초 로 러시아의 대형 입구 사이트 와 검색 인 Rambler 에 사용 되 었 다.메모리 가 적 고 병발 능력 이 강 한 것 이 특징 이다. 사실상 Nginx 의 병발 능력 은 같은 유형의 사이트 서버 에서 비교적 잘 나타난다.
1. Nginx 의 장점 과 작업 원리
\ # 1) 장점 경량급 설치 파일 이 작 게 실 행 될 때 CPU 메모리 사용률 이 낮 고 다 핵 을 지원 하 며 정적 파일 을 처리 하 는 효율 이 높 습 니 다. 커 널 에서 사용 하 는 poll 모델 은 최대 50K 병렬 연결 지원 열 배치 와 동시에 시작 속도 가 빠 릅 니 다.끊 임 없 는 서비스 상황 에서 소프트웨어 와 설정 을 업그레이드 할 수 있 습 니 다.클 라 이언 트 요청 을 수신 하고 분배 하 며 모듈 간 의 상호작용 을 처리 합 니 다.Nginx 의 각종 기능 과 조작 은 모두 모듈 에 의 해 이 루어 진다.Nginx 의 모듈 은 구조 적 으로 핵심 모듈, 기초 모듈 과 제3자 모듈 로 나 뉜 다.
핵심 모듈: HTTP 모듈, EVENT 모듈 과 MAIL 모듈 기초 모듈: HTTP Access 모듈, HTTP FastCGI 모듈, HTTP Proxy 모듈 과 HTTP Rewrite 모듈 제3자 모듈: HTTP Upstream Request Hash 모듈, Notice 모듈 과 HTTP Access Key 모듈 및 사용자 가 직접 개발 한 모듈 과 같은 디자인 은 Nginx 를 편리 하 게 개발 하고 확장 시 킵 니 다.그래서 Nginx 의 기능 이 이렇게 강 한 것 이다.Nginx 의 모듈 은 기본적으로 nginx 에 컴 파일 됩 니 다. 모듈 을 추가 하거나 삭제 하려 면 Nginx 를 다시 컴 파일 해 야 합 니 다. 이것 은 아파 치 의 동적 로드 모듈 보다 편리 하지 않 습 니 다.동적 로드 모듈 이 필요 하 다 면 타 오 바 오 에서 시 작 된 웹 서버 텐 진 을 사용 할 수 있 습 니 다. nginx 를 바탕 으로 고급 기능 을 많이 추 가 했 고 Nginx 를 완전히 호 환 하여 국내 많은 사이트 에서 사용 되 었 습 니 다.
2. 더 많은 연결 지원
Nginx 가 더 많은 병렬 연결 수 를 지원 하도록 실제 상황 에 따라 작업 스 레 드 수 와 모든 작업 스 레 드 가 지원 하 는 최대 연결 수 를 조정 합 니 다.예 를 들 어 'worker processes 10' 과 'worker connections 1024' 를 설정 하면 이 서버 가 지원 하 는 최대 연결 수 는 10 입 니 다.×1024=10240。
worker_processes 10;
events {
    use epoll;
    worker_connections 10240;
}

설명: 이벤트 참고 이벤트 모델 은 use [kqueue | rtsig | epoll | / dev / poll | select | poll] 로 나 뉜 다.epoll 모델 은 Linux 2.6 이상 버 전의 커 널 에 있 는 고성능 네트워크 I / O 모델 로 FreeBSD 위 에 달리 면 kqueue 모델 을 사용한다.window 아래 지정 되 지 않 습 니 다.이 점 은 apache 와 유사 합 니 다. nginx 는 서로 다른 운영 체제 에 대해 서로 다른 이벤트 모델 이 있 습 니 다.
Nginx 는 Apache 보다 더 큰 연결 수 를 처리 할 수 있 지만 HTTP GET FLOOD 는 WEB 서버 뿐만 아니 라 데이터베이스 서버 도 대상 으로 한다.대량의 HTTP 요청 으로 대량의 데이터 베 이 스 를 조회 할 수 있 습 니 다. 몇 초 안에 데이터 베 이 스 를 응답 하지 않 고 시스템 부하 가 높 아 지면 서 서버 가 다운 되 었 습 니 다.
3 、 공격 방지 설정
Nginx 는 '수량' 과 '속도' 를 제어 하 는 데 사용 되 는 모듈 이 2 개 있 습 니 다.쉽게 말 하면 최대 몇 개의 방문 이 있 는 지 를 통제 하고 매 초 에 최대 몇 번 방문 하 는 지 를 통제 합 니 다. 당신 의 동시 방문 은 너무 많 으 면 안 되 고 너무 빠 르 면 안 됩 니 다. 그렇지 않 으 면 '사면 없 음' 입 니 다.http_limit_conn_module 동시 방문 수량 제한 httplimit_req_module 접근 데이터 제한, 초당 최대 몇 개 상세 한 문법 참고http://nginx.org/en/docs/중국어 문서 참조http://tengine.taobao.org/document_cn/http_limit_req_cn.html
limit_req_zone $binary_remote_addr zone=one:3m rate=1r/s;
limit_req_zone $binary_remote_addr $uri zone=two:3m rate=1r/s;
limit_req_zone $binary_remote_addr $request_uri zone=thre:3m rate=1r/s;

위의 두 번 째 명령 은 같은 ip 주 소 를 표시 하고 같은 uri 를 방문 하면 limit req 에 들 어 가 는 제한 (1 초 에 1 개의 요청) 을 초래 할 수 있 습 니 다.너 도 이렇게 설정 할 수 있어.
#    IP    $binary_remote_addr    Key,   IP       20      
#             ?    20    ,     503     ,          
limit_conn_zone $binary_remote_addr zone=TotalConnLimitZone:10m ;
limit_conn  TotalConnLimitZone  20;
limit_conn_log_level notice;
 
#    IP    $binary_remote_addr    Key,   IP        10    
#             ,  ,        ,     503     
limit_req_zone $binary_remote_addr zone=ConnLimitZone:10m  rate=10r/s;
limit_req_log_level notice;

\ # 구체 적 인 서버 설정
server {
    listen   80;
    location ~ \.php$ {
                ##    5    ,        10     + 5   ,        15      ,        503      
        limit_req zone=ConnLimitZone burst=5 nodelay;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        include fastcgi_params;
    }   
 
}

좋은 웹페이지 즐겨찾기