nginx 에서 useragent 로 접속 차단하기
회사에서 관리 중인 서버에 특별한 이유가 없는데 접속 속도가 어마어마 하게 느리고 CPU 사용률도 높아서 원인을 찾아보다 접속 로그에 요상한 bot이 계속해서 접속하는 것을 발견하고 useragent 를 이용해 차단하기로 했다. ip는 계속해서 변하기 때문에 어려움이 있다.
/etc/nginx/ 디렉토리에 useragent.rules 파일을 생성하고 아래 내용을 추가한다.
map $http_user_agent $badagent {
default 0;
~*yellowbrandprotectionbot 1;
~*semrushBot 1;
}
다음으로 nginx.conf 파일에 아래와 같이 추가한다. 추가된 내용은 include /etc/nginx/useragent.rules;
이다.
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
include /etc/nginx/useragent.rules;
다음으로 server 블럭에 아래 코드를 추가한다.
if ($badagent) {
return 403;
}
service nginx reload
명령으로 설정을 적용해준다.