1. Le concept d'ACL
Une ACL est une condition testée sur le flux de données.
Syntaxe de base
Une ACL se compose de trois éléments : le nom, la méthode d'extraction (fetch) et la valeur à comparer. Elle renvoie soit vrai, soit faux.
acl est_image path_end .jpg .png .gif
use_backend static_servers if est_image
2. Les critères de sélection courants
Les fonctions 'fetch' les plus utilisées en production.
Routage par nom de domaine (Host)
Idéal pour héberger plusieurs sites sur une seule IP.
acl host_api hdr(host) -i api.domaine.com
use_backend api_cluster if host_api
Routage par chemin (Path)
Permet de séparer les microservices.
acl is_blog path_beg /blog
use_backend blog_servers if is_blog
3. Opérateurs logiques
Combiner plusieurs ACLs pour des règles complexes.
ET, OU et NON
Par défaut, lister plusieurs ACLs sur une ligne équivaut à un ET. Utiliser plusieurs lignes use_backend équivaut à un OU.
# Condition ET : l'IP est autorisée ET le chemin est /admin
acl is_admin path_beg /admin
acl is_local src 192.168.1.0/24
http-request deny if is_admin !is_localConclusion
La flexibilité du routage.
Puissance des ACLs
Les ACLs permettent de transformer HAProxy en un véritable pare-feu applicatif (WAF) basique ou en un routeur de microservices extrêmement performant.