Redirections et restrictions sur HAProxy

De Ikoula Wiki
Jump to navigation Jump to search

HaProxy logo

Haproxy c'est quoi ?

HaProxy est un logiciel gratuit et à source ouverte qui fournit un équilibreur de charge 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 ?

0



Vous n'êtes pas autorisé à publier de commentaire.