2. Nginx 상용 모듈 - IP 흑백 명단

4342 단어 openresty
간단 한 소개
IP 흑백 명단 을 설정 하기 전에 우 리 는 먼저 사용 하 는 모듈 을 알 아야 한다.http_access_module ngx_http_geo_module ngx_http_map_module
IP 액세스 제어 모듈 httpaccess_module
Nginx 의 deny 와 allow 명령 은 모듈 에서 제공 되 며, Nginx 는 기본적으로 이 모듈 을 내장 합 니 다.설치 할 때 지정 하지 않 는 한 -- without - httpaccess_module。 특정 IP 에 대한 접근 제어 에 사용 되 는 기본 값 은 모든 IP 접근 을 허용 합 니 다. 일부 허용 되 는 경우 deny all 을 정의 해 야 합 니 다.
  • allow 문법: allow address | CIDR | 유 닉 스: | all;기본 값: - 블록: http, server, location, limitexcept 특정한 ip 또는 하나의 ip 세그먼트 접근 허용
  • deny 문법: deny address | CIDR | unix: | all;기본 값: - 블록: http, server, location, limitexcept
  • allow, deny 인 스 턴 스
  • location / {
    	deny 192.168.1.1;
    	allow 192.168.1.0/24;
    	allow 47.98.147.49;
    	deny all;
    }
    

    예 를 들 어 일부 디 렉 터 리 에 있 는 일부 파일 의 접근 을 제한 할 수 있 고 구체 적 으로 스스로 조합 할 수 있다.
  • 모든 디 렉 터 리 에 있 는 sql | log | txt | jar | sh | py 접미사 파일 에 접근 할 수 없습니다
  • location ~.*\.(sql|log|txt|jar|war|sh|py|php) {
    	deny all;
    }
    

    ngx_http_geo_module
    ngx_http_geo_module 모듈 은 변 수 를 만 들 고 클 라 이언 트 IP 주소 에 따라 변 수 를 할당 합 니 다.문법: geo [$address] $variable {...} 기본 값: - 문맥: http
    geo $geo {
        default        0;
        127.0.0.1/32   2;
        192.168.1.0/24 1;
        10.1.0.0/16    1;
    }
    

    지정 한 변수 에서 클 라 이언 트 의 IP 주 소 를 가 져 오 는 것 을 정의 합 니 다.기본적으로 nginx 는 $remoteaddr 변 수 는 클 라 이언 트 IP 주 소 를 얻 지만 다른 변수 에서 도 얻 을 수 있 습 니 다 (0.7.27 버 전). 예 를 들 어:
    geo $arg_remote_addr $geo {
        ...;
    }
    

    ngx_http_map_module
    문서:http://tengine.taobao.org/nginx_docs/cn/docs/http/ngx_http_map_module.html
    모듈 ngxhttp_map_module 는 다른 변수 와 연 결 된 변 수 를 만 들 수 있 습 니 다.문법: map string $variable {...} 기본 값: - 문맥: http
    원본 변수 값 이 변수 와 일치 하지 않 으 면 기본 값 을 결과 로 설정 합 니 다.default 이 설정 되 어 있 지 않 으 면 빈 문자열 을 기본 결과 로 사용 합 니 다.원본 값 이 지정 한 변수 와 일치 합 니 다. 예 를 들 어 마스크 와 정규 가 동시에 일치 하면 다음 순서 로 우선 선택 합 니 다. 1. 마스크 가 없 는 문자열 2. 가장 긴 접두사 가 있 는 문자열, 예 를 들 어 'example. com' 3. 가장 긴 접두사 가 있 는 문자열, 예 를 들 어 'mail.' 4. 순서대로 첫 번 째 로 일치 하 는 정규 표현 식 입 니 다.(프로필 에 나타 나 는 순서) 5. 기본 값
    여기 서 매개 변 수 를 사용 합 니 다: 이름: a r g P A R A M E T E R H T P 설명: 요청 한 매개 변수의 값, 예 를 들 어 / i n d e x. p h p? s i t e = w w. b a i d u. c o m, arg PARAMETER HTTP 로 설명 할 수 있 습 니 다: 요청 한 매개 변수의 값, 예 를 들 어 / index. phop? site = www. baidu. com, argP ARMETERHTTP 로 설명 할 수 있 습 니 다: 요청 중의 한 매개 변수의 값, 예 를 들 어 / index. phop? site = www. baidu. com.매개 변수의 값, 예 를 들 어 / index. php? site = www. baidu. com 은 arg site 로 www. baidu. com 이라는 값 을 얻 을 수 있 습 니 다. 여기 서 우 리 는 매개 변수 name 을 사용 하여 geo 에 게 IP (IP 여야 함) 를 부여 한 다음 에 $name 이 geo 의 값 에 따라 서로 다른 정 보 를 되 돌려 주 고 geo 와 결합 하여 인 스 턴 스 를 사용 합 니 다.
    http   
    geo $arg_name $geo {
            default 0;
            127.0.0.1 1;
            1.2.3.4 2;
            1.2.3.5 3;
        }
    
        map $geo $name{
            0 default;
            1 forbin;
            2 allow;
            3 other;
        }
    server   :
    location = /test1 {
           default_type text/html ;
           return 200  $name;
    }
    

    웹 방문 반환
    http://localhost/test1 =>default
    http://localhost/test1?name=1.2.3.5 =>other
    

    IP 흑백 리스트
    IP 흑백 목록 설정 을 위해 이 세 가지 모듈 을 사용 할 수 있 습 니 다. 여기 서 우 리 는 화이트 리스트 만 분석 합 니 다. 우 리 는 우리 가 허용 하 는 네트워크 만 접근 할 수 있 기 를 바 랍 니 다. 다른 것 은 접근 할 수 없습니다. 그 중에서 geo 기본 값 은 $reote addr 에서 IP 를 가 져 옵 니 다. 테스트 를 편리 하 게 하기 위해 url 의 매개 변수 name 에서 IP 를 가 져 옵 니 다. geo 와 return 까지 만 사용 합 니 다.
    #http   :
    #0       ,1       (    )
    geo $arg_name $geo {
        default 0;
        1.2.3.0/24 1;
    }
    map $geo $name{
            0 "";
            1 $remote_addr;
        }
      #server   :
    location = /test1 {
            if ( $geo != 1 ) {
              return 403;
            }
            default_type text/html ;
            return 200  $name;
    }    
    

    WEB 방문
    http:/localhost/test1?name=1.2.3.4=>       
    http:/localhost/test1?name=1.2.4.4=>  403
    http:/localhost/test1=>  403
    

    총결산
    ngx http core module ngx http access module 접근 제어 모듈 ngx http gzip module ngx http fastcgi module ngx http proxy module ngx http upstream module ngx http rewrite module ngx http limit conn module 사용자 의 병렬 연결 수 및 요청 수 모듈 ngx http limit req module 이 정 의 된 key 에 따라 ngx 요청 과정의 속 도 를 제한 합 니 다 ngx http log modungx http auth basic module 웹 인증 모듈 ngx http ssl module ngx http stub status module ngx 기본 액세스 상태 정보 등 을 기록 하 는 모듈

    좋은 웹페이지 즐겨찾기