Reverse proxy avec HA proxy
C'est quoi un reverse proxy ?
À l'inverse d'un le reverse proxy se place entre les flux qui sont sur internet et le serveur.
Imaginons un réseau hébergeant un site web accéssible sur internet grâce à une redirection de port. Ce site est protégé par un certificat SSL, il utilise donc le port 443 en https.
Si nous souhaitons rendre accéssible un deuxième site web en https du même réseau, il nous est impossible de faire deux redirections pour le même port. Nous allons voir qu'avec un reverse proxy c'est tout à fait possible.
Pré-requis
- Vous devez avoir un nom de domaine
- Avoir également un certificat SSL (que ce soit let's encrypt ou autre) voici un tuto pour une wildcard ACME pfsense ici
- Un site web fonctionnel tournant sur le port 443
Aller dans le gestionnaire de pacquet pfsense et installer le pacquet HAproxy :


Une fois le paquet installé, vous le trouverez sur la partie Services
Rendez vous sur le paquet HAproxy, et sur la partie backend et cliquer sur ajouter

Le backend sera le service sur lequel on souhetera redirigé notre traffic
Pour la première partie remplissez là comme ceci

Nous allons appeler notre backend beta-backend modifier le nom à votre convenance.
Au niveau de la section Server list rajoutez une règle, avec le même nom que le backend et le site (il est mieux d'uniformiser les noms pour ne pas se perdre, dans ce tuto nous faisons comme si le site web était beta.mondomaine.com)
Au niveau de Forwardto choisissez Adress+Port, placez y l'adresse ip de la machine hébergeant le site et le port, et cocher le Encrypt(SSL).
On va maintenant aller sur la partie Frontend et en créer un nouveau.
Appelez le http-frontend et remplissez le exatement comme ci dessous:

Ensuite au niveau des ACL rajouter une nouvelle règle s'appellant beta, au niveau des expressions mettez Host matcheset sur value placez l'url exact de votre site.

Maintenant on va faire matcher notre backend qu'on a créer avec notre ACL.
Rajouter une action et sur use backend choisissez le beta-backend qu'on a crée et sur condition acl names écrivez beta qui est le nom de l'ACL qu'on a crée juste avant.
Au niveau de Default Backend mettez none.

Ici laissez tout comme sur l'image :

Sur Advanced setting laissez les paramètres comme ci dessous :

Sur la partie SSL Offloading sur Certificate choisissez votre wildcard et cochez les deux cases d'en bas comme sur l'image.

Vous pouvez laisser tous le reste par défaut et sauvegarder.
Et là vous pourrez accéder à votre site web sans aucune difficulté via l'url.
Si vous voulez rajouter d'autre sites, il faudra juste créer de nouveau backend et garder le même frontend en rajoutant juste de nouvelles règles au niveau de l'access control list et faisant matcher des actions et ces nouvelles règles.

