Pour compléter ce chapitre sur les conteneurs, nous allons voir comment configurer Nginx en reverse proxy.
Pour le moment, nos conteneurs utilisent des ports non standards pour publier les sites Internet depuis notre hôte.
L’utilisation de Nginx en reverse proxy, va nous permettre de publier les différents conteneurs sur le port 80 et 443 de l’hôte Docker.
Si vous avez suivi la leçon sur Nginx et les virtualhosts, la fonction de reverse proxy fonctionne de la même façon, la principale différence ce trouve dans la configuration du virtualhost où l’on indique à Nginx d’envoyé le trafic vers un autre service Web.
Avant de commencer, il faut prévoir ou avoir l’url pour chaque conteneur, pour la leçon les voici :
- c1.rdr-it.local -> C1
- c2.rdr-it.local -> C2
- c3.rdr-it.local -> C3
Dans cette leçon, je vais seulement expliquer pour C1, car ensuite c’est la même chose.
Si comme moi, vous êtes dans un environnement privé, il va falloir éditer le fichier pour ajouter les enregistrements. Mon serveur Docker à l’IP 192.168.1.10, je vais donc ajouter les lignes suivantes dans le fichier hosts :
192.168.1.10 c1.rdr-it.local
192.168.1.10 c2.rdr-it.local
192.168.1.10 c3.rdr-it.local
Configurer un virtualhost en reverse proxy sur Nginx
De retour sur le serveur Ubuntu, créer un fichier pour le virtualhost c1.rdr-it.local :
sudo touch /etc/nginx/sites-available/c1
Ouvrir le fichier :
sudo nano /etc/nginx/sites-available/c1
Ajouter le contenu ci-dessous en adaptant les lignes 2 (server_name) et 5 (port du service web).
Activer le virtualhost en ajoutant un lien symbolique dans le dossier /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/c1 /etc/nginx/sites-enabled/
Vérifier la configuration Nginx :
sudo nginx -t
S’il n’y a pas d’erreur, recharger la configuration :
sudo systemctl reload nginx
Tester l’accès au site Internet
Depuis un navigateur, accéder à l’URL configurée dans le virtualhost, le site Internet doit s’afficher.
Certificat SSL Let’s Encrypt avec Certbot
Pour générer un certificat SSL et accéder au site en HTTPS, utiliser la commande ci-dessous et suivre les intructions.
sudo certbot