Block
nginx rejects the request (403 by default) before it reaches your application.
Repsheet decides whether an actor (an IP address, a network, a session, an API key) is blocked, allowed, or marked. nginx applies that decision on every request, from memory, with no network round trip.
nginx rejects the request (403 by default) before it reaches your application.
Trusted actors skip every block and mark, whoever recorded them.
The request goes through, carrying the signal. Pass it to your application, log it, or rate limit it with limit_req.
valkey-cli.Repsheet adds well under a microsecond of CPU per request, even with a million decisions loaded, and nothing measurable to latency from p50 to p99. If Valkey goes away, nginx keeps serving from the last decisions it had. See the benchmarks.
getrepsheet.com is served by nginx with Repsheet, the bot verifier, and the status-codes detector, all running in front of this page. The whole setup is open source.