Nginx limit_req and limit_conn zones per client IP, with burst, 429 status, a dry-run mode and an allow-list for trusted addresses.
All generators
tools.arewel.com needs JavaScript: the configs are generated in your browser.