Compare commits

..
1 Commits
Author SHA1 Message Date
fauno 28778ca411 feat: implement basic rate limiting by ip address
continuous-integration/drone/pr Build is failing
2026-09-09 06:24:39 -03:00
4 changed files with 21 additions and 3 deletions
+9
View File
@@ -249,3 +249,12 @@ WRITE_TIMEOUT=0s
# #
# https://doc.traefik.io/traefik/reference/install-configuration/entrypoints/#opt-forwardedHeaders-trustedIPs # https://doc.traefik.io/traefik/reference/install-configuration/entrypoints/#opt-forwardedHeaders-trustedIPs
#TRUSTED_IPS="['10.13.12.1']" # 10.13.12.1 is an example #TRUSTED_IPS="['10.13.12.1']" # 10.13.12.1 is an example
## Rate limits
# You can enable universal rate limits by setting RATE_LIMIT_EVERYTHING
# to true, otherwise each app needs to export their own middleware labels.
#
# https://doc.traefik.io/traefik/reference/routing-configuration/http/middlewares/ratelimit/
#RATE_LIMIT_EVERYTHING=false
#RATE_LIMIT_AVERAGE=100
#RATE_LIMIT_BURST=200
+2 -2
View File
@@ -1,4 +1,4 @@
export TRAEFIK_YML_VERSION=v36 export TRAEFIK_YML_VERSION=v37
export FILE_PROVIDER_YML_VERSION=v13 export FILE_PROVIDER_YML_VERSION=v14
export ENTRYPOINT_VERSION=v5 export ENTRYPOINT_VERSION=v5
export ANUBIS_YML_VERSION=v1 export ANUBIS_YML_VERSION=v1
+6 -1
View File
@@ -22,6 +22,11 @@ http:
basicAuth: basicAuth:
usersFile: "/run/secrets/usersfile" usersFile: "/run/secrets/usersfile"
{{ end }} {{ end }}
ip-rate-limit:
rateLimit:
average: {{ or (env "RATE_LIMIT_AVERAGE") "100" }}
burst: {{ or (env "RATE_LIMIT_BURST") "200" }}
period: "1s"
security: security:
headers: headers:
frameDeny: true frameDeny: true
@@ -70,4 +75,4 @@ tls:
certificates: certificates:
- certFile: /run/secrets/ssl_cert - certFile: /run/secrets/ssl_cert
keyFile: /run/secrets/ssl_key keyFile: /run/secrets/ssl_key
{{ end }} {{ end }}
+4
View File
@@ -51,6 +51,10 @@ entrypoints:
{{ if ne (env "TRUSTED_IPS") "" }} {{ if ne (env "TRUSTED_IPS") "" }}
forwardedHeaders: forwardedHeaders:
trustedIPs: {{ env "TRUSTED_IPS" }} trustedIPs: {{ env "TRUSTED_IPS" }}
{{ end }}
{{ if eq (env "RATE_LIMIT_EVERYTHING") "true" }}
middlewares:
- "ip-rate-limit@file"
{{ end }} {{ end }}
transport: transport:
respondingTimeouts: respondingTimeouts: