Sign inSign up

ogulcanaydogan/rate-limiter

By ogulcanaydogan

•Updated 7 months ago

Redis-based rate limiting sidecar (sliding window, token bucket)

Image
0

1.2K

ogulcanaydogan/rate-limiter repository overview

⁠Rate Limiter

Redis-based rate limiting sidecar. Supports sliding window and token bucket strategies.

⁠Quick Start

docker run -p 8080:8080 \
  -e REDIS_URL=redis://redis:6379/0 \
  -e DEFAULT_RATE=100/minute \
  ogulcanaydogan/rate-limiter

⁠API Endpoints

⁠GET/POST /api/check

Check if a request is within rate limits.

Response:

{
  "allowed": true,
  "limit": 100,
  "remaining": 99,
  "reset": 1709424000
}
⁠POST /api/reset

Reset rate limit for a specific key.

⁠GET /api/stats

Get rate limiter statistics.

⁠Environment Variables

VariableDescriptionDefault
PORTServer port8080
REDIS_URLRedis connection URLredis://localhost:6379/0
DEFAULT_RATEDefault rate limit (e.g., 100/minute, 1000/hour)100/minute
STRATEGYAlgorithm: sliding_window or token_bucketsliding_window
WHITELISTComma-separated IPs to bypass limiting-
KEY_PREFIXRedis key prefixrl:

⁠Rate Format

<limit>/<window> where window is: second, minute, hour, day

Examples: 100/minute, 1000/hour, 10/second, 50000/day

⁠Docker Compose Example

services:
  redis:
    image: redis:7-alpine

  rate-limiter:
    image: ogulcanaydogan/rate-limiter
    ports:
      - "8080:8080"
    environment:
      - REDIS_URL=redis://redis:6379/0
      - DEFAULT_RATE=100/minute
      - STRATEGY=sliding_window
    depends_on:
      - redis

  app:
    image: myapp
    environment:
      - RATE_LIMITER_URL=http://rate-limiter:8080

⁠License

MIT

Tag summary

Content type

Image

Digest

sha256:5b3e2dca1…

Size

47.9 MB

Last updated

7 months ago

docker pull ogulcanaydogan/rate-limiter