에 대한 연결 제한을 설정하는 방법.png)
nginx: 검색 엔진 봇(특히 Bingbot)에 대한 연결 제한을 설정하는 방법
2022-10-19 last update
7 minutes reading nginx web server서버 관리자는 이 문제를 알고 있을 것입니다. 서버를 최적화하기 위해 모든 작업을 수행했으며 정말 잘 작동하고 있으며 Bingbot과 같은 어리석은 검색 엔진 봇이 등장하여 수백 개의 연결로 모든 가상 호스트를 동시에 공격합니다. , 서버 부하를 증가시킵니다. 물론 봇을 완전히 차단하고 싶지는 않습니다(특정 검색 엔진에 관심이 없는 경우 제외). 따라서 robots.txt 및/또는 nginx를 사용하여 서버에 대한 검색 엔진 봇의 연결을 제어할 수 있습니다.
이 봇은 웹 사이트를 방문할 때마다 과도한 양의 연결을 생성하기 때문에 이 튜토리얼에서 Bingbot에 초점을 맞추고 있습니다(다른 검색 엔진 봇에서는 이를 눈치채지 못했습니다). 물론 가장 먼저 해야 할 일은 Bing 웹마스터 도구에서 크롤링 속도를 제한하는 것입니다. 그래도 도움이 되지 않거나 서버의 모든 가상 호스트에 대한 Bing 웹마스터 도구에 액세스할 수 없는 경우 계속 읽으십시오.
Bingbot은 Crawl-delay 지시문을 이해하므로(Googlebot은 이를 사용하지 않으므로 Googlebot에 사용하지 마십시오!) robots.txt 파일에서 이를 사용할 수 있습니다( http://www.bing.com/blogs/site_blogs/b/webmaster/archive/2012/05/03/to-crawl-or-not-to-crawl-that-is-bingbot-s-question.aspx 참조).
robots.txt에 Bingbot에 대한 추가 섹션을 만들었기 때문에 User-Agent: *에 대한 Allow/Disallow 지시문은 Bingbot에 더 이상 유효하지 않으므로 Bingbot에 대한 Allow/Disallow 지시문을 반복해야 합니다. 이와 같이:
HttpGeoModule 및 HttpLimitReqModule을 사용하여 nginx 서버에 대한 검색 엔진 봇의 연결을 제어할 수 있습니다./etc/nginx/nginx.conf를 엽니다...
이렇게 하면 Bingbot의 크롤링 속도가 초당 2개의 요청으로 제한됩니다. 초과 연결은 지연되고 200개의 버스트를 넣습니다(버스트가 가득 찰 때까지 nginx는 Bingbot에 503 오류를 반환합니다).
물론 지리적 컨테이너에 더 많은 IP 또는 서브넷을 자유롭게 추가할 수 있습니다.
nginx를 다시 로드하는 것을 잊지 마십시오.
nginx: http://nginx.org/
nginx 위키: http://wiki.nginx.org/
1 서문
이 봇은 웹 사이트를 방문할 때마다 과도한 양의 연결을 생성하기 때문에 이 튜토리얼에서 Bingbot에 초점을 맞추고 있습니다(다른 검색 엔진 봇에서는 이를 눈치채지 못했습니다). 물론 가장 먼저 해야 할 일은 Bing 웹마스터 도구에서 크롤링 속도를 제한하는 것입니다. 그래도 도움이 되지 않거나 서버의 모든 가상 호스트에 대한 Bing 웹마스터 도구에 액세스할 수 없는 경우 계속 읽으십시오.
2 robots.txt 사용
Bingbot은 Crawl-delay 지시문을 이해하므로(Googlebot은 이를 사용하지 않으므로 Googlebot에 사용하지 마십시오!) robots.txt 파일에서 이를 사용할 수 있습니다( http://www.bing.com/blogs/site_blogs/b/webmaster/archive/2012/05/03/to-crawl-or-not-to-crawl-that-is-bingbot-s-question.aspx 참조).
User-Agent: bingbot Crawl-delay: 1
robots.txt에 Bingbot에 대한 추가 섹션을 만들었기 때문에 User-Agent: *에 대한 Allow/Disallow 지시문은 Bingbot에 더 이상 유효하지 않으므로 Bingbot에 대한 Allow/Disallow 지시문을 반복해야 합니다. 이와 같이:
User-Agent: * Disallow: /cache/ Disallow: /engine/ Disallow: /files/ Disallow: /templates/ Disallow: /uploads/ Disallow: /newsletter/ Disallow: /kontaktformular/ Disallow: /widerrufsrecht/ Disallow: /datenschutz-und-sicherheit Disallow: /agb/ Disallow: /shopware.php/sViewport,admin Disallow: /shopware.php/sViewport,note Disallow: /shopware.php/sViewport,basket Disallow: /shopware.php/sViewport,rma Disallow: /shopware.php/sViewport,support Disallow: /shopware.php/sViewport,ticket Disallow: /shopware.php/sViewport,newsletter Disallow: /shopware.php/sViewport,tellafriend Sitemap: http://www.example.com/sitemap.xml User-Agent: bingbot Crawl-delay: 1 Disallow: /cache/ Disallow: /engine/ Disallow: /files/ Disallow: /templates/ Disallow: /uploads/ Disallow: /newsletter/ Disallow: /kontaktformular/ Disallow: /widerrufsrecht/ Disallow: /datenschutz-und-sicherheit Disallow: /agb/ Disallow: /shopware.php/sViewport,admin Disallow: /shopware.php/sViewport,note Disallow: /shopware.php/sViewport,basket Disallow: /shopware.php/sViewport,rma Disallow: /shopware.php/sViewport,support Disallow: /shopware.php/sViewport,ticket Disallow: /shopware.php/sViewport,newsletter Disallow: /shopware.php/sViewport,tellafriend Sitemap: http://www.example.com/sitemap.xml
3 nginx를 사용하여 봇 연결 제어
HttpGeoModule 및 HttpLimitReqModule을 사용하여 nginx 서버에 대한 검색 엔진 봇의 연결을 제어할 수 있습니다./etc/nginx/nginx.conf를 엽니다...
vi /etc/nginx/nginx.conf... 다음을 http {} 컨테이너에 추가합니다(vhost 구성 파일이 포함/정의되는 부분 앞).
[...] geo $isabot { default 0; #bingbot 157.55.32.0/24 1; 157.56.229.0/24 1; 157.56.93.0/24 1; 157.55.33.0/24 1; } map $isabot $limited_ip_key { 0 ''; 1 $binary_remote_addr; } limit_req_zone $limited_ip_key zone=isabot:5m rate=2r/s; limit_req zone=isabot burst=200; [...]
이렇게 하면 Bingbot의 크롤링 속도가 초당 2개의 요청으로 제한됩니다. 초과 연결은 지연되고 200개의 버스트를 넣습니다(버스트가 가득 찰 때까지 nginx는 Bingbot에 503 오류를 반환합니다).
물론 지리적 컨테이너에 더 많은 IP 또는 서브넷을 자유롭게 추가할 수 있습니다.
nginx를 다시 로드하는 것을 잊지 마십시오.
/etc/init.d/nginx reload