Last Updated on 12월 28, 2021 by Jade(정현호)
유명한 봇 외 과도한 네트웍 트래픽을 사용하는 악성 봇들이 있습니다
이런 봇들을 Nginx에 설정하여 한번에 차단을 진행하려 합니다(특히 SemrushBot)
Apache 환경에서 설정을 하는 내용은 예전에 포스팅 한적이 있었습니다 해당글의 Nginx 버전이 될 것 같습니다.

1. 차단 내역 파일 생성
먼저 아래 경로에 bad_bot.conf 파일을 생성 후 차단할 agent 내용을 입력 합니다
[root]# vi /etc/nginx/conf.d/bad_bot.conf map $http_user_agent $bad_bot { default 0; ~*360Spider 1; ~*360Spider 1; <.....중략.....> ~*Zyborg 1; ~*ZyBorg 1; }
내용이 많고 매우 긴 관계로 아래 첨부파일을 다운 받아서 사용하시면 됩니다
다운로드
2. Nginx 적용 및 reload
2-1 server 블럭 추가
다음으로 server 블럭에 아래 코드를 추가합니다.
if ($bad_bot) { return 403; }
2-2 nginx 재시작
nginx 재시작을 재시작 하거나 reload 하여 변경 사항을 적용 합니다.
systemctl reload nginx
or
systemctl restart nginx
2-3 차단 확인
적용 후 확인 해보니 정상적으로 차단이 이루어 지는 것을 확인 할 수 있습니다.
<...중략...>
403 ( SemrushBot/7~bl; +http://www.semrush.com/bot.html)"
403 ( SemrushBot/7~bl; +http://www.semrush.com/bot.html)"
403 ( SemrushBot/7~bl; +http://www.semrush.com/bot.html)"
403 ( SemrushBot/7~bl; +http://www.semrush.com/bot.html)"
403 ( SemrushBot/7~bl; +http://www.semrush.com/bot.html)"
<...중략...>
3. agent bot 항목 관련
참조한 bad bot 리스트에서 아래 5개의 차단 대상은 지금 환경에서 제외 하였습니다.
~*Yandex
~*YandexBot
~*Baiduspider
~*BaiduSpider
~*Slackbot
관련 한 내용으로 저번 포스팅 내용처럼 해당 Robot은 중국 Search Engine 와 러시아의 Search Engine 입니다 보통 차단되는 이유는 수집해가는 크롤링 양이 많아 과도한 트래픽을 사용하기 때문 입니다
차단하게 되면 트래픽이 그만큼 줄어들게 됩니다 하지만 반대로 사이트나 블로그의 목적이나 특성상 많이 노출이 되거나 다양한 검색 엔진에서 검색이 되어야 하는 부분이 더 중요하다면 해당 Search Engine 도 허용을 하는것을 고려해 봐야 합니다.
운영하는 사이트의 정책이나 트래픽 소모량 , 운영하시는 분들의 판단에 따라서 2개의 bot 이외에 차단을 허용하거나 혹은 더 막을 필요가 있는 bot 은 추가하여 사용하시면 될 것 같습니다
그래서 지금 환경에서는 Yandex 와 Baiduspider 는 제외 하였으나 같이 차단을 하시려면 아래 4개의 라인을 추가로 더 설정하시면 됩니다.
~*Yandex 1; ~*YandexBot 1; ~*Baiduspider 1; ~*BaiduSpider 1; ~*Slackbot 1;
업데이트) 제외 항목이 4개에서 5개로 포스팅 내용 수정되었습니다.
4. Reference
Reference link
shareablecode.com/agent-in-nginx [Link]
관련된 다른 글








Principal DBA(MySQL, AWS Aurora, Oracle)
핀테크 서비스인 핀다에서 데이터베이스를 운영하고 있어요(at finda.co.kr)
Previous - 당근마켓, 위메프, Oracle Korea ACS / Fedora Kor UserGroup 운영중
Database 외에도 NoSQL , Linux , Python, Cloud, Http/PHP CGI 등에도 관심이 있습니다
purityboy83@gmail.com / admin@hoing.io