A powerful rate limit extension for Vaxic.
npm i vaxic-ratelimit
First, require the package.
const RateLimiter = require('vaxic-ratelimit')
// ... create your Vaxic app ^
const rl = new RateLimiter({
// options
}, [
// rules
])
app.use(rl.extension)
// ... start server v
Rules are Objects. Properties of a rule:
time
required - How much time to look through logs for to find matching requests. This is an array, which looks like this:[5, 'seconds']
or[6, 'minutes']
limit
required - How many requests to allow within this period of timemethod
- Request methodpathname
- Request pathname. Can be a Regular Expression or a String.blockMessage
- Message to respond with when blocking (as error property of JSON response)
Options:
cloudflare
- If enabled, uses theCF-Connecting-IP
header to detect client IPsblockMessage
- Message to respond with when blocking (used when no blockMessage is defined)varyLimit
- If enabled, varies limit for rules per request by up to 2 requests, making it harder for attackers to detect ratelimiting rules