nginx 모듈 geo 및 geoip
、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
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.