# Increase if you have very long User-Agent strings map_hash_bucket_size 256; # Bot user agents map $http_user_agent $bot_name { default ""; ~*ClaudeBot "claude"; ~*Sogou "sogou"; ~*meta-externalagent "meta-externalagent"; # add more as needed } # Decide the rate-limit key (per-IP for each bot in this example) map $bot_name $bot_limit_key { default ""; "claude" $binary_remote_addr; "sogou" $binary_remote_addr; "meta-externalagent" $binary_remote_addr; } # Shared memory zone – only non-empty keys are counted limit_req_zone $bot_limit_key zone=bots:20m rate=240r/m; # 4r/s per IP+bot # Status code returned when the limit is exceeded limit_req_status 429;