Redirections et restrictions sur HAProxy
Haproxy c'est quoi ?
HaProxy est un logiciel gratuit et à source ouverte qui fournit un équilibreur de charger et un serveur proxy haute disponibilité pour les applications TCP et HTTP qui répartissent les demandes sur plusieurs serveurs. Il est développé en langage C et a la réputation d'être rapide et efficace.
Introduction
Voici quelques configurations de redirections et restrictions sur HAProxy.
Pour chacune des configurations, il est précisé à quel niveau ces dernières sont applicables, frontend, backend ou les deux.
L'indication en mode http, signifie qu'on travaille ici en couche 7 du modèle OSI, cela nous suffit. Il est possible de passer en mode tcp qui est lui de couche 4 et permet de travailler plus en profondeur.
Configurations Haproxy
Forcer tous les domaines en HTTPS
La règle est applicable au niveau frontend et backend, la redirection ici est de type permanente (code 301, çà sera de même pour toutes les redirections de la FAQ) :
redirect scheme https code 301 if !{ ssl_fc }
Forcer un ou plusieurs domaines précis en HTTPS
La règle est applicable au niveau frontend et backend, dans notre exemple nous utilisons les domaines domain.tld et www.domain.tld, cette liste peut être exhaustive :
redirect scheme https code 301 if { hdr(Host) -i domain.tld -i www.domain.tld -i ...AUTRE_DOMAINE... } !{ ssl_fc }
Rediriger un domaine vers une URL
La règle est applicable au niveau backend en mode http, dans notre cas nous redirigeons domain.tld vers www.domain.tld :
acl NOM_DE_LA_REGLE hdr(host) -i domain.tld http-request redirect code 301 location http://www.domain.tld if NOM_DE_LA_REGLE
Rediriger un domaine vers une URL en gardant l'URI
La règle est applicable au niveau backend en mode http, dans notre cas nous redirigeons domain.tld vers www.domain.tld tout en gardant l'URI, exemple domain.tld/index.php vers www.domain.tld/index.php :
acl NOM_DE_LA_REGLE hdr(host) -i domain.tld http-request redirect code 301 location http://www.domain.tld%[capture.req.uri] if NOM_DE_LA_REGLE
Interdire une URI d'un domaine
La règle est applicable au niveau backend en mode http, l'interdiction ici est mise en place sur les URI /config ou /config/ du domaine domain.tld :
acl NOM_DE_LA_REGLE_1 hdr(host) -i domain.tld acl NOM_DE_LA_REGLE_2 path_reg /config($|/$) http-request deny if NOM_DE_LA_REGLE_1 NOM_DE_LA_REGLE_2
Restreindre une URL d'un domaine à une IP
La règle est applicable au niveau backend en mode http, la restriction est uniquement sur le domaine domain.tld, l'URI qui commence par /admin (donc l'URL domain.tld/admin) pour l'IP 1.2.3.4 :
acl NOM_DE_LA_REGLE_1 hdr(host) -i domain.tld acl NOM_DE_LA_REGLE_3 path_beg /admin acl NOM_DE_LA_REGLE_2 src 1.2.3.4 http-request deny if NOM_DE_LA_REGLE_1 NOM_DE_LA_REGLE_2 !NOM_DE_LA_REGLE_3
Cet article vous a semblé utile ?
Activer l'actualisation automatique des commentaires