[Nginx 설정 시리즈] Nginx Geo 와 Nginx 맵 모듈 을 기반 으로 Nginx 화이트 리스트 설정

프로필
      일반적인 상황 에서 nginx 를 사용 하여 ip 제한 방문 요청 빈도 등 제한 내용 을 사용 하면 우 리 는 특정한 ip 에 대해 제한 제거 작업 을 해 야 하기 때문에 본 고 는 nginx geo 와 nginx map 를 바탕 으로 이런 상황 과 관련 된 설정 을 도입 했다.
      인위적인 조작 으로 삭제 되 지 않 은 상태 에서 (without - http geo module) nginx 기본 모듈 에 ngx - http - geo - module 관련 내용 을 불 러 왔 습 니 다.
       ngx - http - geo - module 은 변 수 를 만 드 는 데 사용 할 수 있 고 변수 값 은 클 라 이언 트 ip 주소 에 의존 합 니 다.
       ngx - http - map - module 은 다른 변수 와 변수 값 을 바탕 으로 변 수 를 만 들 수 있 습 니 다. 분 류 를 허용 하거나 여러 변 수 를 서로 다른 값 에 매 핑 하여 하나의 변수 에 저장 할 수 있 습 니 다.
      ngx - http - map - module 관련 내용 은 인위적인 제거 가 아 닌 기본 nginx 에 도 존재 합 니 다 ( --without-http_map_module)
2. 관련 명령 형식
Nginx geo 형식 설명
Syntax (      ): geo [$address] $variable { ... }

Default (    ): -

Content (      ): http

Nginx map 형식 설명
Syntax (      ): map String $variable { ... }

Default (    ):-

Content (      ): http

3. 화이트 리스트 설정 예제
   
http{

    # ...       
    
    
    #     ip    
    geo $whiteiplist { 
          default 1 ;
          #myself
           127.0.0.1/32 0;
         #remote ip 
          64.223.160.0/19 0;
     }
     
     #  map                ip   
     map $whiteiplist $limit{
        1 $binary_remote_addr ;
        0 "";
     }
     
     #        
     limit_req_zone $limit zone=foo:1m rate=10r/m;     
}

server{
  location /yourApplicationName {
      proxy_pass http://192.168.1.111:8095/app;
      #   server           zone = foo
      limit_req zone=foo burst=5 nodelay;           
  }
}

        화이트 리스트 설정 은 합작 고객, 검색엔진 등 요청 필터 제한 에 사용 할 수 있 습 니 다.
#(      )

  #           , :   Post  , :

    http{
      
      #     ..
      
      #    map  
        map $request_method $limit {
            default "";
            POST $binary_remote_addr;
          }

       #    
       limit_req_zone $limit zone=reqlimit:20m rate=10r/s;
       
   }
   
   #   server     。
   
   server{
      ... #       
    }

    
    
    
    
    
 #     ,               , :
 
 http{
  
   #... 
   
   #       
   map $whiteiplist $limitips{
            1 $binary_remote_addr;
            0 "";
       }


    #       ,          
    map $request_method $limit {
            default "";
           # POST $binary_remote_addr;
             POST $limitips;
        }

    #           
    limit_req_zone $limit zone=reqlimit:20m rate=10r/s; 
    
    # server     
    server{
       #...        
    }
    
    
    #                ,          api        
    #   ,     
    server{
      location /app {
         proxy_pass http://192.168.1.111:8095/app;
         limit_req zone=foo burst=5 nodelay; 
      }
      location /app/api {
          proxy_pass http://192.168.1.111:8095/app/api
      }
    }
    
    #  nginx         ,           api         

  
참고 자료
공식 문서 참조: 
 ngx-http-geo-module
 ngx-http-map-module

좋은 웹페이지 즐겨찾기