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 /apiCette 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 .pngCette 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 roundrobinChaque nouveau client est envoyé au serveur suivant dans la liste de manière circulaire.
leastconn
Optimisé pour les traitements longs.
balance leastconnHAProxy 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 *:80HAProxy 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 deoption httpchk pour personnaliser le test de santé.
send
Définit la requête à envoyer au serveur.
http-check send meth GET uri /healthHAProxy 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 200Le 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 HAProxyInsè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 httpPermet à HAProxy de comprendre et modifier le contenu des paquets HTTP.
tcp
Analyse de la couche 4.
mode tcpHAProxy 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:80Dé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 checkLe 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?statsActive la page de statistiques et la rend accessible via l'URI spécifiée.
auth
Sécurisation par mot de passe.
stats auth admin:rousseltmRestreint 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 5sDéfinit le temps maximum d'attente pour que HAProxy établisse une connexion TCP avec le serveur backend.
client
timeout client 30sDéfinit le temps maximum d'inactivité autorisé côté client une fois la connexion établie.
server
timeout server 30sDé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_apiEnvoie la requête au pool de serveurs 'api_cluster' si l'ACL 'is_api' est vérifiée.
11. server-template
Permet de générer dynamiquement des serveurs backend sans les déclarer un par un. Très utilisé avec Docker, DNS et Kubernetes.
Structure
La syntaxe est :server-template <base-name> <start-end> <dns-template> [options]. base-name : nom de base utilisé pour générer les serveurs (ex : web → web1, web2, web3).
start-end : nombre d'éléments à sélectionner. Si c'est un entier, correspond au nombre d'instances souhaitées dans l'ordre des résultats de la résolution. Si plage numérique, correspond à la plage souhaitée (ex : 2-5 → 4 serveurs mais du 2e au 5e).
dns-template : nom DNS ou template résolu dynamiquement par HAProxy (ex : web.service.local ou backend.internal).
options : paramètres additionnels comme check, resolvers, resolve-prefer pour gérer santé et résolution DNS.
Exemple Docker / DNS
server-template web 1-5 web.service.local:80 check resolvers dockerPermet à HAProxy de créer automatiquement les serveurs web1 à web5 et en déduisant leurs noms/IP via résolution DNS.
12. option
Active des comportements globaux ou spécifiques dans frontend ou backend.
Structure
La directive option active des fonctionnalités additionnelles dans HAProxy.Exemples courants
option forwardfor
option httpchk
option redispatch
option httplog
option dontlognull
forwardfor
Ajoute automatiquement l'IP client dans X-Forwarded-For.
httpchk
Active les health checks HTTP sur les serveurs backend.
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 globalIndique à HAProxy d'utiliser la configuration de journalisation définie dans la section 'global'.
maxconn
maxconn 4096Limite le nombre total de connexions simultanées pour éviter la saturation des ressources système.
user / group
user haproxy
group haproxyDéfinit les privilèges système sous lesquels le processus HAProxy doit s'exécuter une fois démarré.
option forwardfor
option forwardforAjoute l'entête HTTP 'X-Forwarded-For' contenant l'IP réelle du client avant de transmettre la requête au serveur.
retries
retries 3Définit le nombre de tentatives de reconnexion au serveur backend en cas d'échec de connexion TCP.