안녕하세요. 졸린개발자입니다.
오늘은 서버에 크롤러가 들어오기를 원치 않지만, 크롤러가 들어올 경우,
크롤러가 들어오지 않게 하는 방법에 대해 알아봅시다.
왜 크롤러가 들어오는것을 원치 않을까요?
저는 현재 팀 프로젝트를 하고 있습니다.
프런트엔드 서버는 public하게 노출이 되어있기 때문에 상관없지만,
백엔드는 경우가 다릅니다.
백엔드서버에는 크롤러가 들어와 쓸데없는 트래픽을 잡아먹게 됩니다.
실제로 크롤러가 들어올까요?
그래서 실제 운용중인 프로젝트의 access log를 보면서
크롤러가 실제 들어오는지 살펴봅시다.
현재 프로젝트에 nginx를 통해 tomcat으로 들어오고 있고,
nginx는 /var/log/nginx/access.log로 제공하고 있습니다
Access 로그분석
그림1을 보면, 해킹시도를 하고 있습니다.
이런 로그를 보니, 평소에 보안도 신경써야 겠다는 생각도 드네요.
그림2를 보면, Palo Alto Networks company에서 크롤링을 시도하고 있네요.
그럼 이렇게 들어오는 크롤링을 어떻게 대처할 수 있을까요?
Robots.txt
https://ko.wikipedia.org/wiki/%EB%A1%9C%EB%B4%87_%EB%B0%B0%EC%A0%9C_%ED%91%9C%EC%A4%80
로봇 배제 표준 - 위키백과, 우리 모두의 백과사전
ko.wikipedia.org
말그대로 로봇 배제 표준입니다.
즉, 크롤러에게 여기는 들어오지 말라고 표시를 해줍니다.
물론 이 robots.txt가 있든없든 들어올 수는 있습니다.
하지만 양심적인 회사들은 이 robots.txt를 보고, 들어오지 않을것입니다.
그래서 들어오지 못하게 하려면
http://host/robots.txt에 다음과 같은 내용을 보여주면 됩니다
User-agent: *
Disallow: /
내용을 해석하면, 모든 user-agent에 대해서 /(root) 부터 아래의 url을 disallow합니다.
결론
오늘은 robots.txt를 통해, 크롤러에게 들어오지 말라고 표시를 해주는 방법에 대해 알아봤습니다.
사실 크롤러를 막아야 겠다고 생각한 것은,
ec2 memory usage가 너무 많아, 혹시 크롤러 때문에 그런 것은 아닐까? 하는 생각에서부터 시작했습니다.
access log를 분석해보니, 크롤러 때문에 많아진것은 아니였지만,
크롤러가 트래픽을 먹을 수 있다는 생각이 들어, 차단해야겠다고 생각했습니다.
물론 robots.txt가 크롤러들이 못들어오게 막는 것은 아닙니다.
양심적인 회사들이, 이것을 보고, 원치않는 서버들에 대해 들어오지 않을 뿐이죠.
일단 저도 계속해서 크롤러가 들어오는지 log를 꾸준히 확인해 봐야겠네요.
어쨌든, 오늘도 한건 해결했네요.
긴글 읽어주셔서 감사하고 좋은 하루 보내세요.
'배포 > Nginx' 카테고리의 다른 글
Nginx설정파일을 이해해봅시다 (0) | 2022.04.21 |
---|