Publié le : 13/12/2024 à 10:00 Mis à jour le : 15/06/2026 à 16:16 Vues : 519

Une exploration complète des directives essentielles de HAProxy : de bind à http-check, apprenez à configurer votre load balancer avec précision.

1. acl

Listes de contrôle d'accès pour les tests logiques. Disponible depuis la version 1.1.

Structure

La syntaxe générale est : acl <nom> <critère> <valeurs>. Le nom permet de réutiliser le test plus tard.

is_api

Utilise path_beg pour tester le début du chemin de l'URL.

acl is_api path_beg /api

Cette ligne crée une règle nommée 'is_api' qui est validée si l'URL commence par /api.

is_static

Utilise path_end pour identifier les fichiers par leurs extensions.

acl is_static path_end .jpg .png

Cette commande définit la règle 'is_static' pour filtrer les requêtes vers des fichiers d'images.

2. balance

Définit l'algorithme de répartition de charge. Disponible depuis la version 1.0.

Structure

La syntaxe est : balance <algorithme>. Elle se place généralement dans une section backend.

roundrobin

L'algorithme par défaut pour une distribution égale.

balance roundrobin

Chaque nouveau client est envoyé au serveur suivant dans la liste de manière circulaire.

leastconn

Optimisé pour les traitements longs.

balance leastconn

HAProxy choisit le serveur ayant le plus petit nombre de sessions ouvertes au moment de la requête.

3. bind

Définit les adresses et ports d'écoute du frontend. Disponible depuis la version 1.0.

Structure

La syntaxe est : bind [<adresse>]:<port_range> [options].

Interface et Port

Spécifie le point d'entrée réseau.

bind *:80

HAProxy acceptera les connexions sur toutes les interfaces réseau disponibles sur le port 80.

SSL/TLS

Active le chiffrement sur le point d'entrée.

bind *:443 ssl crt /etc/ssl/certs/site.pem

Écoute sur le port 443 en utilisant le fichier certificat PEM spécifié pour la terminaison SSL.

4. http-check

Configuration avancée des Health Checks applicatifs. Disponible depuis la version 2.2.

Structure

Utilisé en complément de option httpchk pour personnaliser le test de santé.

send

Définit la requête à envoyer au serveur.

http-check send meth GET uri /health

HAProxy enverra une requête HTTP GET sur /health pour tester la vitalité de l'application.

expect

Vérifie la réponse du serveur.

http-check expect status 200

Le serveur n'est considéré comme 'UP' que s'il répond avec un code d'état 200.

5. http-request

Manipule ou filtre les requêtes HTTP entrantes. Disponible depuis la version 1.5.

Structure

La syntaxe est : http-request <action> [if/unless <condition>].

deny

Bloque l'accès selon une condition.

http-request deny if { src 192.168.1.50 }

Rejette immédiatement la requête si l'IP source est 192.168.1.50.

set-header

Ajoute ou modifie des entêtes HTTP.

http-request set-header X-Proxy-By HAProxy

Insère l'entête 'X-Proxy-By' dans la requête transmise au serveur backend.

6. mode

Définit le protocole de fonctionnement de l'instance. Disponible depuis la version 1.0.

Structure

La syntaxe est simple : mode <http|tcp>.

http

Analyse de la couche 7.

mode http

Permet à HAProxy de comprendre et modifier le contenu des paquets HTTP.

tcp

Analyse de la couche 4.

mode tcp

HAProxy agit comme un relais de flux binaire sans lire le contenu protocolaire applicatif.

7. server

Déclare un serveur backend et ses options de santé. Disponible depuis la version 1.0.

Structure

La syntaxe est : server <nom> <adresse>[:port] [options].

Nom et Adresse

Déclaration de base d'un serveur.

server web1 10.0.0.1:80

Définit un serveur nommé 'web1' localisé à l'adresse IP 10.0.0.1 sur le port 80.

check

Activation du monitoring.

server web1 10.0.0.1:80 check

Le mot-clé 'check' active les tests de santé réguliers pour s'assurer que le serveur est opérationnel.

8. stats

Configure l'interface de monitoring. Disponible depuis la version 1.1.

Structure

S'utilise avec plusieurs options pour définir le comportement de la page de rapport.

enable / uri

Activation et point d'accès.

stats enable
stats uri /haproxy?stats

Active la page de statistiques et la rend accessible via l'URI spécifiée.

auth

Sécurisation par mot de passe.

stats auth admin:rousseltm

Restreint l'accès aux statistiques à l'utilisateur 'admin' avec le mot de passe 'rousseltm'.

9. timeout

Gère les délais d'expiration des connexions. Disponible depuis la version 1.2.

Structure

La syntaxe est : timeout <type> <durée>. Les durées peuvent être en ms, s, m, h.

connect

timeout connect 5s

Définit le temps maximum d'attente pour que HAProxy établisse une connexion TCP avec le serveur backend.

client

timeout client 30s

Définit le temps maximum d'inactivité autorisé côté client une fois la connexion établie.

server

timeout server 30s

Définit le temps maximum d'attente pour que le serveur backend traite la requête et commence à répondre.

10. use_backend

Route dynamiquement vers un groupe de serveurs. Disponible depuis la version 1.1.

Structure

Définit le choix du backend. Syntaxe : use_backend <nom> [if/unless <condition>].

if

Routage basé sur une ACL.

use_backend api_cluster if is_api

Envoie la requête au pool de serveurs 'api_cluster' si l'ACL 'is_api' est vérifiée.

11. Autres directives

Paramètres globaux et comportementaux. Disponibles depuis la version 1.0.

Structure

Ensemble de paramètres de configuration système et de comportements par défaut.

log

log global

Indique à HAProxy d'utiliser la configuration de journalisation définie dans la section 'global'.

maxconn

maxconn 4096

Limite le nombre total de connexions simultanées pour éviter la saturation des ressources système.

user / group

user haproxy
group haproxy

Définit les privilèges système sous lesquels le processus HAProxy doit s'exécuter une fois démarré.

option forwardfor

option forwardfor

Ajoute l'entête HTTP 'X-Forwarded-For' contenant l'IP réelle du client avant de transmettre la requête au serveur.

retries

retries 3

Définit le nombre de tentatives de reconnexion au serveur backend en cas d'échec de connexion TCP.

À propos de cet article

Auteur(s) : Martin LEKPA (Tech Lead et formateur Observabilité)

Mots-clés : HAProxy configuration directives acl bind stats timeout load balancing balance http-check http-request mode server use_backend check roundrobin leastconn ssl crt timeout connect timeout client timeout server stats enable stats uri stats auth http-request deny http-request allow http-request set-header

Envie d'aller plus loin ?

Lien copié dans le presse-papiers !