Home Nginx로 해외 ip 차단하는 법
Post
Cancel

Nginx로 해외 ip 차단하는 법

Nginx로 해외 ip 차단하는 법

🎊 시작하기 전에..

해외 ip를 차단하려면 필요한 module가 있다. --with-http_geoip_module가 있어야 하는데 nginx -V를 사용해 확인한 후 아래를 보면 좋을 것 같다.

1️⃣ 가장 먼저

ubuntu 기준으로 /etc/nginx 내부에 있는 nginx.conf 파일의 http안에 값을 넣어준다.

1
2
3
4
5
geoip_country /usr/share/GeoIP/GeoIP.dat;
map $geoip_country_code $allowed_country {
	default no;
	KR yes;
}

$geoip_country_code가 KR이면 $allowed_country에 yes의 값이 들어가고, 이외에는 no의 값이 들어간다.

2️⃣ 두 번째로

사용할 server에 if문으로 $allowed_country를 검증한다.

1
2
3
4
5
6
7
8
9
server {
	...
	
	if ($allowed_country = no) {
		return 412;
	}
	
	...
}

위와 같이 하면 된다.

⚠ 주의점

if($~~)를 하게되면 에러가 발생하는데, 문법상 if ($~~)로 해야하기 때문이다.

만약, nginx: [emerg] unknown directive "geoip_country"가 뜬다면 링크를 참고하면된다. 간단하게 동적 모듈이 없어서 발생하는 문제이다.

This post is licensed under CC BY 4.0 by the author.