Nginx 보안 접근 설정

4141 단어 Nginx안전 하 다.
사이트 시스템 보안 설정 (Nginx) 은 사이트 가 악성 GJ 에 노출 되 는 것 을 방지한다.사이트 예 를 들 어 디 도스, CC 등.그들 사이 의 원 리 는 모두 같다. 즉, 대량의 요청 데 이 터 를 서버 에 보 내 는 것 이다.
  • Nginx 능 동적 방어 방법 Nginx 에는 사용자 연결 에 접근 하 는 '수량' 과 '속도' 를 제어 하 는 모듈 이 2 개 있다.각각 HttpLimitZoneModule: 동시 접속 수 접근 제어 제한 HttpLimitReqModule: 접근 데 이 터 를 제한 합 니 다. 1 초 에 최대 몇 번 의 요청 이상 의 두 모듈 설정 은 시스템 업무 의 정상 적 인 방문 에 영향 을 주기 쉽 습 니 다. 1 초 에 가장 많은 방문 횟수 를 제한 합 니 다. 동시에 동시 방문 통 제 는 너무 죽 으 면 안 됩 니 다. 그렇지 않 으 면 모두 죽 일 수 없습니다.모두 정상 적 인 고객 의 요 구 를 밖으로 막 았 다.
  • Nginx 일반 설정 http 모듈 에서 설정
    #     IP    $binary_remote_addr    Key,   IP       50      
    #             ?    50    ,     503     ,          
    # limit single IP 50 concurrent control
    limit_conn_zone $binary_remote_addr zone=TotalConnLimitZone:20m ;
    limit_conn  TotalConnLimitZone  50;
    limit_conn_log_level notice;
    
    #     IP    $binary_remote_addr    Key,   IP        20    
    #              ,  ,        ,     503     
    # limit single IP/s 20 Request
    limit_req_zone $binary_remote_addr zone=ConnLimitZone:20m  rate=20r/s;
    limit_req_log_level notice;
    중 "limit conn zone $binary remote addr zone = TotalConnLimitZone: 20m;" 는 TotalConnLimitZone 이라는 저장 영역 을 정의 하 며 크기 는 20M 입 니 다."limit req log level notice;" 는 log 단 계 를 정의 합 니 다.그 중에서 "limit req zone $binary remote addr zone = ConnLimitZone: 20m rate = 25r / s;" 는 ConnLimitZone 이라는 저장 영역 을 정의 하고 ConnLimitZone 내용 은 원 격 IP 주소 이 며 ConnLimitZone 크기 는 20m 이 며 ConnLimitZone 의 평균 요청 속 도 는 초당 20 개 입 니 다."limit req log level notice;" 는 log 단 계 를 정의 합 니 다.이상 설정 은 server 모듈
    ...
    location  /abc/ {
            limit_req zone=ConnLimitZone burst=5 nodelay;
            proxy_pass http://abc_pool/;
        }
    ...
    에 적 용 됩 니 다. 그 중에서 "zone = ConnLimitZone" 설정 은 어느 설정 영역 을 사용 하여 제한 합 니까? 위 limitreq_zone 의 name 대응;burst = 5, burst 폭발 이라는 뜻 입 니 다. 이 설정 은 크기 가 5 인 버퍼 를 설정 하 는 것 입 니 다. 대량의 요청 (폭발) 이 올 때 방문 빈도 제한 을 초과 한 요청 은 이 버퍼 에 먼저 넣 을 수 있 습 니 다. 따라서 총 초당 처리 요청 은 위의 20 + 5 개의 줄 입 니 다.nodelay, 설정 하면 방문 빈도 가 초과 되 고 버퍼 가 가득 차 면 503 으로 돌아 갑 니 다. 설정 이 없 으 면 모든 요청 이 줄 을 기다 리 고 있 습 니 다.
  • Nginx 의 고 급 스 러 운 설정 은 간단 한 서버 보안 제한 접근 설정 입 니 다. 비교적 간단 한 클 라 이언 트 브 라 우 저 - – > 시스템 서버 의 접근 구조 입 니 다. 중간 에 각종 네트워크 가속 (CDN) 이 없 는 상태 에서 설정 합 니 다.많은 경우 일반 사용자 브 라 우 저 - – > 360 사이트 위 사 가속 (CDN, 360 방 CC, DOS) - > 아 리 클 라 우 드 가속 서버 (우리 가 만 든 CDN, 아 리 클 라 우 드 방패) - > 소스 서버 (PHP 프로그램 이 여기에 배치 되 어 있 습 니 다. iptables, nginx 보안 설정).사이트 중간 에 여러 층 의 투명 가속 과 안전 여과 을 겪 었 는데 이런 상황 에서 위의 '일반 설정' 을 사용 할 수 없다.'원본 IP' 주 소 는 일반 사용자 의 IP 가 아니 라 중간 네트워크 가속 서버 의 IP 주소 입 니 다.따라서 실제 클 라 이언 트 IP 를 얻 으 려 면 X - Forward - for: 사용자 IP, 프 록 시 IP... 다 중 프 록 시 를 거 친 후에 사용자 의 실제 IP 는 첫 번 째 위치 에 있 고 그 다음 에 중간 프 록 시 서버 의 IP 주소 와 함께 여기 서 사용자 의 실제 IP 주 소 를 찾 아 이 IP 주 소 를 제한 하면 됩 니 다.Nginx 설정:
    #         IP  
    map $http_x_forwarded_for  $clientRealIp {
        ""  $remote_addr;
        ~^(?P[0-9\.]+),?.*$  $firstAddr;
    }
    
    # limit single IP 50 concurrent control,   $binary_remote_addr  $clientRealIp,$clientRealIp Key
    limit_conn_zone $clientRealIp zone=TotalConnLimitZone:20m ;
    limit_conn  TotalConnLimitZone  50;
    limit_conn_log_level notice;
    
    # limit single IP/s 20 Request,   $binary_remote_addr  $clientRealIp,$clientRealIp Key
    limit_req_zone $clientRealIp zone=ConnLimitZone:20m  rate=20r/s;
    limit_req_log_level notice;
    
    #        
    server {
      listen   80;
      location ~ \.php$ {
    
        limit_req zone=ConnLimitZone burst=5 nodelay;
    
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        include fastcgi_params;
    }   
    }
  • Nginx 설정 을 어떻게 테스트 하 는 지 테스트 하고 에코 모듈 을 사용 합 니 다.로 컬 Nginx 에 이 모듈 이 있 는 지 확인 하고 nginx - V 명령 을 입력 하여 확인 합 니 다. 없 으 면 이 모듈 을 추가 로 다운로드 하여 컴 파일 설치 해 야 합 니 다.여기 서 nginx 설정
    server {
    listen   80;
        server_name  www.aaa.com;
    
        ##       /nginx-test    ,     $clientRealIp   ,      ,    IP   
        location /nginx-test {
                echo $clientRealIp;
        }
    }
    을 직접 보 여 줍 니 다. 인터넷 주 소 를 방문 하여 nginx - test 를 연결 하고 다운로드 한 후에 텍스트 컴 파일 러 로 열 면 사용자 측 이 다 층 CDN 을 통과 한 후에 도 $client RealIp 는 여전히 유효한 원시 사용자 IP 주소 입 니 다.
  • 좋은 웹페이지 즐겨찾기