Lorsque vous hébergez plusieurs services chez vous, vous pourriez avoir besoin d’utiliser plusieurs machines, pour plusieurs raisons :
- Hébergement de plusieurs noms de domaine,
- Un service nécessitant une machine dédiée (plus puissante, configuration particulière, …),
- Votre Raspberry Pi est en manque de RAM et vous voulez agrandir votre parc de machines.
Sauf que… Seule une machine dans votre réseau local peut recevoir le trafic des ports http
et https
: celle que vous avez configurée comme destinataire des ports 80 et 443 sur votre box. Il faut donc un moyen de dispatcher les requêtes réseau en fonction du service ou du nom de domaine.
Et ça, nginx
sait le faire ! Avec une limitation qui en déroutera certains : le chiffrement SSL doit être fait au moment de la répartition.
Prenons l’exemple de visio.mondomaine.fr
qui redirigera vers un logiciel de visioconférence.
Le serveur primaire est celui qui recevra le trafic de la box, et le serveur secondaire est celui sur lequel le service tournera.
Configuration de Yunohost
Ajout d’un domaine
Si vous voulez rediriger tout un domaine, il faut le rajouter dans Yunohost primaire. Il faudra bien entendu avoir acheté ce nom de domaine auprès d’un registrar, tel OVH ou Gandi, comme votre premier nom de domaine, ou y avoir configuré un sous-domaine.
Dans le panneau d’administration de Yunohost, rajoutez ce domaine. Activez éventuellement Let’s Encrypt pour le chiffrement https
; ceci ne compliquera en rien la suite de la procédure.
Ajout d’une application
Pour faciliter les choses, il faut créer une « application » Yunohost. Celle-ci permettra d’éviter que les visiteurs tombent sur l’écran de connexion de Yunohost primaire.
Installez donc une « Multi Custom Webapp »:
- Donnez-lui un nom lisible (« Proxy pour visio »)
- Choisissez le nom de domaine concerné
- Choisissez un chemin pour votre Webapp :
- Si vous redirigez tout le nom de domaine, entrez
/
- Si vous redirigez un sous-dossier, entrez-le (ex :
/visio
)
- Si vous redirigez tout le nom de domaine, entrez
- Cochez la case « Est-ce un site public ? » sinon seuls les utilisateurs de Yunohost pourront y accéder.
Modification des fichiers de configuration
Désormais, votre domaine visio.mondomaine.fr
devrait fonctionner, mais il ne redirige pas encore vers la machine que vous voulez.
Votre domaine est décrit par plusieurs fichiers de configuration nginx
:
/etc/nginx/conf.d/visio.mondomaine.fr.conf
/etc/nginx/conf.d/visio.mondomaine.fr.d/webapp_visio.mondomaine.fr_.conf
NB : Les noms peuvent varier mais conserveront ce schéma :
<domaine>.conf
<domaine>.d/webapp_<domaine>_.conf
Fichier <domaine>.conf
Une seule ligne doit être rajoutée à <domaine>.conf
, au début du fichier, avant le bloc server
:
upstream mon_second_serveur { server 192.168.0.8:80; }
- Vous pouvez nommer votre upstream comme vous voulez
- Remplacez
192.168.0.8
par l’adresse IP locale de votre serveur secondaire
Fichier <domaine>.d/webapp_<domaine>_.conf
Le contenu entier du fichier peut être remplacé par :
location / { proxy_pass http://mon_second_serveur; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $remote_addr; }
- Si vous ne redirigez qu’un dossier, indiquez-la dans la location à la place de
/
- Remplacez
<mon_second_serveur>
par le nom de votre upstream - Sans les
proxy_set_header
, le serveur secondaire verrait, dans les requêtes, non pas le nom de domaine mais son adresse IP configurée comme upstream !
Redémarrez nginx
, avec :sudo systemctl restart nginx
Et voilà ! votre nom de domaine secondaire est correctement redirigé vers votre machine secondaire. Il suffit désormais de configurer celle-ci.
Une erreur 500 indique que le serveur secondaire ne répond pas au serveur nginx
primaire.
Comme vous pouvez vous en douter, si on redirige vers le port 80 du serveur secondaire, c’est que le trafic en local sera non chiffré. Si vous voulez le chiffrer, je vous conseille cet article : HTTPS behind your reverse proxy.
Déployer Xpenology sur Proxmox (et ajouter les disques en passthrough)
Installer Nextcloud sur son NAS Synology en une poignée de minutes ! (Sur DSM 6)
Installer Vaultwarden sur Synology (DSM7) via Docker
Partager la connexion de son smartphone Android avec un Mac [MAJ Catalina]
Déployer Xpenology sur Proxmox (et ajouter les disques en passthrough)
Activer le copier / coller sur la console d’une machine virtuelle VMware ESXI
Installer Vaultwarden sur Synology (DSM7) via Docker
WordPress : attribuer les bonnes permissions aux dossiers et aux fichiers