nginx 모듈 geo 및 geoip

7310 단어
 、nginx  :

테스트 를 편리 하 게 하기 위해 컴 파일 할 때 nginx 의 제3자 모듈 echo 출력 을 추가 하 였 습 니 다.
nginx    :
--prefix=/apps/svr/nginx-geo-geoip --with-http_ssl_module --with-http_flv_module --with-http_gzip_static_module --with-http_addition_module --with-http_auth_request_module --with-http_geoip_module --add-module=../ngx_cache_purge-2.3 --add-module=/home/apps/echo-nginx-module-0.60

2. nginx ngxhttp_geo_모듈 모듈
1. 기본적으로 nginx 는 이 모듈 을 추가 합 니 다. 이 모듈 이 필요 하지 않 으 면 컴 파일 할 때 추가 합 니 다. --without-http_geo_모듈 매개 변수
2. geo 명령:
Syntax:	geo [$address] $variable { ... }
Default:	—
Context:	http
지정 한 변수 에서 클 라 이언 트 의 IP 주 소 를 가 져 오 는 것 을 정의 합 니 다. nginx 는 CIDR 이나 주소 세그먼트 를 통 해 주 소 를 설명 하고 다음 과 같은 몇 가지 인 자 를 지원 합 니 다.
delete: 지정 한 네트워크 default 삭제: 클 라 이언 트 주소 가 정 의 된 주소 와 일치 하지 않 으 면 nginx 는 이 값 을 사용 합 니 다.CIDR 을 사용 하면 default 대신 '0.0.0.0 / 0' 을 사용 할 수 있다.include: 주소 와 값 을 정의 하 는 파일 을 포함 하고 여러 개 를 포함 할 수 있 습 니 다.proxy: 신뢰 할 수 있 는 주 소 를 정의 합 니 다.신뢰 할 수 있 는 주소 에서 요청 하면 nginx 는 "X - Forward - For" 헤드 를 사용 하여 주 소 를 얻 습 니 다.일반 주소 에 비해 신뢰 할 수 있 는 주 소 는 순서대로 검 측 됩 니 다.proxy_recursive: 귀속 찾기 주 소 를 엽 니 다.재 귀적 검색 을 닫 으 면 클 라 이언 트 주소 가 신뢰 할 수 있 는 주소 와 일치 할 때 nginx 는 'X - Forward - for' 의 마지막 주 소 를 사용 하여 원본 클 라 이언 트 주 소 를 대체 합 니 다.재 귀적 검색 을 시작 하면 클 라 이언 트 주소 가 신뢰 할 수 있 는 주소 와 일치 할 때 nginx 는 'X - Forward - for' 의 마지막 신뢰 할 수 있 는 주소 와 일치 하지 않 는 주 소 를 사용 하여 원본 클 라 이언 트 주 소 를 대체 합 니 다.ranges: 주소 세그먼트 형식 으로 주 소 를 정의 하려 면 이 매개 변 수 를 첫 번 째 로 해 야 합 니 다.주소 라 이브 러 리 를 가속 화하 기 위해 서 주 소 는 오름차 순 으로 정의 해 야 합 니 다.
3. nginx 테스트:
a, default, include 테스트
nginx.conf:
geo $arg_ip $address {
        default    fromdefault;
        127.0.0.1/24  from127-24;
        127.0.0.1/32  from127-32;
        10.10.10.10 from10;

        include /apps/conf/nginx/geo.conf;
        delete 127.0.0.0/16;
        proxy  11.11.11.11;
    }

    server{
      listen 80;
      server_name address.com;
      location /ip138 {
         default_type text/plain;
         echo $address;
      }

    }
 cat /apps/conf/nginx/geo.conf
1.1.1.1 CN;
2.2.2.2 US;
3.3.3.3 JA;
테스트 결과:
 curl http://address.com/ip138 -x 127.0.0.1:80
fromdefault
 curl http://address.com/ip138?ip=127.0.0.1 -x 127.0.0.1:80
from127-32
curl http://address.com/ip138?ip=127.0.0.12 -x 127.0.0.1:80
from127-24
 curl http://address.com/ip138?ip=10.10.10.10 -x 127.0.0.1:80
from10
 curl http://address.com/ip138?ip=1.1.1.1 -x 127.0.0.1:80
CN
 curl http://address.com/ip138?ip=2.2.2.2 -x 127.0.0.1:80
US
$ curl http://address.com/ip138?ip=3.3.3.3 -x 127.0.0.1:80
JA
b. delete 매개 변수 테스트:
   geo $arg_ip $address {
        default    fromdefault;
        127.0.0.1/24  from127-24;
        127.0.0.1/32  from127-32;
        10.10.10.10 from10;
        10.190.200.15 fromreal;
        include /apps/conf/nginx/geo.conf;
        delete 10.10.10.10;
        proxy  11.11.11.11;
    }
테스트 결과: 지 정 된 네트워크 를 삭제 한 후
 curl http://address.com/ip138?ip=10.10.10.10 -x 127.0.0.1:80
fromdefault

ngx_http_geo_module 모듈 은 IP 스케줄 로 사용 할 수 있 습 니 다. 상기 geo. conf 파일 을 보완 하고 간단 한 ip 138 도 실현 할 수 있 지만 완전한 ip 주소 라 이브 러 리 가 필요 합 니 다.
2. nginx ngxhttp_geo_module 모듈 1. 사 이 트 는 서로 다른 소스 주소 에 따라 서로 다른 2 급 사이트 로 전송 해 야 합 니 다. ngx 를 통 해http_geoip_module 모듈 구현.nginx 는 기본적으로 이 모듈 을 컴 파일 하지 않 습 니 다. 컴 파일 할 때 켜 야 합 니 다 -- with - httpgeoip_module 컴 파일 옵션.ngx_http_geoip_module 모듈 은 변 수 를 만 들 고 미리 컴 파일 된 MaxMind 데이터 베 이 스 를 사용 하여 클 라 이언 트 IP 주 소 를 분석 하고 변수 값 을 얻 은 다음 변수의 값 에 따라 일치 하 게 판단 하기 때문에 모듈 은 MaxMind GeoIP 라 이브 러 리 에 의존 하고 GeoIP 데이터 베 이 스 는 두 가지 형식 CSV 형식 과 바 이 너 리 형식 을 지원 합 니 다.
2. geoip 명령:
Syntax:	geoip_country file;
Default:	—
Context:	http

$geoip_country_code
       ,  “RU”,“US”。

$geoip_country_code3
       ,  “RUS”,“USA”。

$geoip_country_name
    ,  “Russian Federation”,“United States”。
 
  
  :geoip_city file
  :—
   :http

$geoip_area_code
    (   )
              ,        。

$geoip_city_continent_code
        , “EU”,“NA”

$geoip_city_country_code
        , “RU”,“US”

$geoip_city_country_code3
        , “RUS”,“USA”

$geoip_city_country_name
   ,  “Russian Federation”,“United States”

$geoip_dma_code
  DMA    (  “    ”),  Google AdWords API geotargeting

$geoip_latitude
  

$geoip_longitude
  

$geoip_region
           (  、  、 、 、  ),  “48”、“DC”

$geoip_region_name
     (  、  、 、 、  ),  “Moscow City”,“District of Columbia”

$geoip_city
   ,  “Moscow”,“Washington”
$geoip_postal_code
  :geoip_org file
  :—
   :http

               IP     。              :

$geoip_org
   ,  “The University of Melbourne”
  :geoip_proxy address | CIDR
  :—
   :http

      。          ,         “X-Forwarded-For”。
  :geoip_proxy_recursive on | off
  :geoip_proxy_recursive off
   :http

        ,“X-Forwarded-For”           。
        ,  “X-Forwarded-For”          。

3、 GeoIP:
wget http://geolite.maxmind.com/download/geoip/api/c/GeoIP.tar.gz
tar zxvf GeoIP.tar.gz
cd GeoIP-1.4.8/
./configure 
make && make install
echo '/usr/local/lib' > /etc/ld.so.conf.d/geoip.conf
ldconfig
4、 nginx:
nginx    :
--prefix=/apps/svr/nginx-geo-geoip --with-http_ssl_module --with-http_flv_module --with-http_gzip_static_module --with-http_addition_module --with-http_auth_request_module --with-http_geoip_module --add-module=../ngx_cache_purge-2.3 --add-module=/home/apps/echo-nginx-module-0.60

4、 :( ,GeoIP IP, include )
geo $geoip_country{
    include /apps/conf/nginx/nginx_geoip.txt;
  }

if ( $geoip_country ~ ^(?:CN)$ ){
          rewrite ^(.*) http://www.baidu.com  break;
      }
if ( $geoip_country ~ ^(?:US)$ ){
          rewrite ^(.*) http://www.sina.com  break;
      }
       
cat /apps/conf/nginx/nginx_geoip.txt 
1.0.0.0/24 AU;
xx.xx.xx.xx CN;
**.**.**.** US;

IP :xx.xx.xx.xx : www.baidu.com

IP :**.**.**.** : www.sina.com

 
  
 
  
 
 

좋은 웹페이지 즐겨찾기