NginxでSemrushBotをアクセス拒否
SemrushBotから短時間に大量のアクセスがあるので拒否する設定にしたときの覚書。
環境: CentOS Stream 8, Nginx 1.22.1
アクセスログ確認。
# less /var/log/nginx/access.log
185.191.171.12 - - [08/Mar/2023:04:29:33 +0900] "GET /dr.htm/page/6/page/7/page/4/page/13/page/9/page/2/page/9/page/3/ HTTP/1.1" 301 169 "-" "Mozilla/5.0 (compatible; SemrushBot/7~bl; +http://www.semrush.com/bot.html)" "-"
nginxの設定ファイルでユーザーエージェントにマッチしたらコネクションを閉じる(return 444)。
参考: NGINX to block bad bots. (add Twenga|TwengaBot if you want to exclude them too)
# cd /etc/nginx/conf.d/global/
# less wordpress_restrictions.conf
## Block bots#if ($http_user_agent ~* (SemrushBot|MJ12bot) ) {return 444;}
テストしてnginxリロード
# nginx -t
# systemctl reload nginx
全サーバーで共有するのでコミットを忘れずに。
# git add --all
# git commit -m 'Update block bot list'
# git push origin master
お行儀がいいbotは何もしない。
botの一覧と簡単な説明。