Nginx + GeoIP 사용자 IP 귀속 국 구분
3253 단어 기술.
여 기 는 Nginx 의 GeoIP 확장 (ngx http geoip module) 을 사 용 했 습 니 다. 표준 판 Nginx 에서 확장 을 다시 컴 파일 해 야 하지만 제 가 사용 하 는 Tengine 은 동적 모듈 을 직접 불 러 올 수 있 습 니 다.
먼저 nginx - module - geoip 설치:
sudo apt-get install nginx-module-geoip
그리고 IP 데이터 베 이 스 를 다운로드 하고 압축 을 풀 면 압축 을 풀 수 있 는 GeoIPv 6. dat 파일 을 원 하 는 곳 에 놓 을 수 있 습 니 다.
DAT 판 데이터베이스 공식 은 더 이상 다운 로드 를 제공 하지 않 습 니 다. 아래 링크 는 조상 백업 입 니 다.
자세 한 내용 은:https://dev.maxmind.com/geoip/legacy/downloadable/
wget https://cloud.moezx.cc/mirrors/geoip/database/GeoIPv6.dat.gz
gzip -d -k GeoIPv6.dat.gz
GeoIPv 6. dat 는 IPv 4 와 IPv 6 의 데 이 터 를 덮어 씁 니 다. IPv 4 만 필요 하 다 면 아래 파일 을 사용 하 십시오.
wget https://cloud.moezx.cc/mirrors/geoip/database/GeoIP.dat.gz
그리고 ngx 를 다운로드 하고 컴 파일 해 야 합 니 다.http_geoip_module 모듈, 컴 파일 완료 후 ngix. conf 에 다음 부분 을 추가 합 니 다:
바 이 너 리 라 이브 러 리 도입 (Tengine 2.3.0 이전 버 전에 만 적용 되 며, 이후 버 전 은 dso 명령 을 제거 하 였 습 니 다)
dso {
load ngx_http_geoip_module.so;
}
바 이 너 리 라 이브 러 리 도입 (원본 Nginx 및 Tengine 2.3.0 이후 버 전에 적용)
load_module ngx_http_geoip_module.so;
http 블록 에 다음 초기 화 코드 추가
http {
···
geoip_country /path/to/GeoIPv6.dat;
# CDN ( Cloudflare IP)
geoip_proxy 103.21.244.0/22;
geoip_proxy 103.22.200.0/22;
geoip_proxy 103.31.4.0/22;
geoip_proxy 104.16.0.0/12;
geoip_proxy 108.162.192.0/18;
geoip_proxy 131.0.72.0/22;
geoip_proxy 141.101.64.0/18;
geoip_proxy 162.158.0.0/15;
geoip_proxy 172.64.0.0/13;
geoip_proxy 173.245.48.0/20;
geoip_proxy 188.114.96.0/20;
geoip_proxy 190.93.240.0/20;
geoip_proxy 197.234.240.0/22;
geoip_proxy 198.41.128.0/17;
geoip_proxy 2400:cb00::/32;
geoip_proxy 2405:8100::/32;
geoip_proxy 2405:b500::/32;
geoip_proxy 2606:4700::/32;
geoip_proxy 2803:f800::/32;
geoip_proxy 2c0f:f248::/32;
geoip_proxy 2a06:98c0::/29;
geoip_proxy_recursive on;
···
}
Server :
쓰기 1: 일부 지역 접근 허용
server {
···
set $where_are_you_from 0;
if ($geoip_country_code = CN) {
set $where_are_you_from 1;
}
location /Document/ {
default_type text/html;
charset utf-8;
if ($where_are_you_from = 0) {
return 200 'This resource is not available in your country!';
}
}
···
}
쓰기 2: 일부 지역 방문 금지
변수 $disallowed 설정country
map $geoip_country_code $disallowed_country {
default no;
US yes;
CN no;
}
server {
···
location /Document/ {
default_type text/html;
charset utf-8;
if ($disallowed_country) {
return 200 'This resource is not available in your country!';
}
}
···
}
배 웠 어 요?
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
vim + sed 로 셸 스 크 립 트 파일 정리 하기/etc/sysconfig/network008 009 # Check that networking is up.010 [ ${NETWORKING} = "no" ] && exit 0011 012 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.