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の一覧と簡単な説明。



【関連記事】