bouine est configuré via un fichier YAML passé avec --config. Les variables d’environnement sont développées (${VAR}, ${VAR:-default}) avant le décodage.
Nombre maximal de connexions data-plane simultanées (0 = défaut 4096). Protège contre l’épuisement des FD. Les connexions keep-alive inactives occupent aussi un slot.
idle_timeout
120s
Timeout keep-alive des connexions data-plane inactives. Avec un proxy amont (upstream) en face, gardez son timeout keep-alive inactif en dessous de cette valeur pour que le proxy ferme les connexions inactives en premier.
tcp_quickack
true (Linux)
Active TCP_QUICKACK sur les connexions acceptées pour réduire la latence (no-op sur les autres plateformes)
read_timeout
30s
Durée maximale de lecture de l’en-tête et du corps d’une requête (depuis v0.5.9). C’est la défense anti-slowloris — ce n’est pas un deadline de bout en bout (les fetch origin sont bornés par fetch_timeout). À augmenter pour des clients mobiles lents ou de gros uploads. Doit rester sous le filet de sécurité de 5 minutes du data-plane.
storage
Champ
Par défaut
Description
hot_max_bytes
1GiB
Taille maximale du tier hot en RAM
warm_dir
—
Répertoire du tier warm (mmap)
warm_max_bytes
—
Taille maximale du tier warm sur disque
upstream_pools[]
Champ
Description
name
Nom du pool, référencé par routes[].pool
targets[]
Liste des adresses des serveurs d’origine
health.active
Health check actif (path, interval, timeout, unhealthy_threshold)
health.passive
Health check passif (consecutive_5xx, eject_for)
routes[]
Champ
Description
match.path_prefix
Correspondance par préfixe de chemin
match.host
Correspondance par hôte
match.methods
Correspondance par méthodes HTTP
pool
Nom du upstream pool
cache.ttl_default
TTL par défaut si l’origine n’envoie pas d’en-têtes de fraîcheur
cache.ttl_override
Override le TTL interne de bouine
cache.stale_while_revalidate
Durée pendant laquelle le contenu périmé est servi pendant la revalidation
cache.stale_if_error
Durée pendant laquelle le contenu périmé est servi en cas d’erreur d’origine
cache.negative_ttl
TTL pour les réponses d’erreur cachables
cache.jitter_percent
Pourcentage aléatoire appliqué au TTL
cache.enabled
Active ou désactive le cache pour cette route (par défaut: true)
cache.max_fetch_concurrency
Nombre maximal de fetch origin simultanés pour cette route (défaut 32)
cache.fetch_timeout
Timeout origin par route (en-tête + corps). Sans valeur explicite, la route hérite de connect.response_header_timeout du pool (défaut 30s) ; avec une valeur, elle est appliquée telle quelle — une route peut dépasser le réglage du pool (sémantique depuis v0.5.11)
cache.fetch_wait_timeout
Durée d’attente d’un slot de fetch avant shedding (défaut 100ms, max 1s) : objet périmé servi si disponible, sinon 503 + Retry-After: 1
cluster
Champ
Description
enabled
Active le clustering
mode
strong ou eventual
join[]
Liste des adresses seed pour le gossip
peer_max_idle_conn_duration
Durée de vie des connexions peer inactives (défaut 120s). Doit rester en dessous de admin.idle_timeout (défaut 300s) — la validation de config rejette toute combinaison explicite qui viole cet ordre
peer_fetch_concurrency
RPC peer-fetch/put simultanés par nœud (défaut 4, plage 1–128, depuis v0.5.11). En mode strong la plupart des hits sont des peer hits : à augmenter avec peer_max_conns_per_host sous charge
ban_ttl
Durée de rétention des bans d’invalidation avant élagage par le reaper (défaut 24h, ≥ 1s si défini, depuis v0.5.20)
tls
Configuration mTLS pour la communication entre peers
tls
Champ
Description
certs[]
Liste des certificats (cert_file + key_file)
min_version
Version TLS minimale (par défaut: 1.2)
cloudflare
Champ
Description
zone_id
ID de zone Cloudflare
api_token
Jeton API Cloudflare (permission Cache Purge)
async
Mode asynchrone (par défaut: true)
propagate
Quelles opérations propager (purge, ban, refresh)
tracing
Champ
Description
endpoint
Point de terminaison OTLP (format host:port, pas URL)
service_name
Nom du service pour les traces (par défaut: “bouine”)
sampling_rate
Taux d’échantillonnage (0.0 à 1.0)
admin
Champ
Description
token
Jeton bearer pour l’authentification de l’API d’administration
idle_timeout
Timeout keep-alive des connexions du serveur d’admin (défaut 300s), y compris les RPC peer du cluster (/v1/peer/*). Gardez cluster.peer_max_idle_conn_duration en dessous de cette valeur.