Nginx
- Installation de Nginx
- Protéger un site par mot de passe avec l'authentification de base
- Rediriger un nom domaine sur un container
Installation de Nginx
Installation
sudo apt install nginx
Lancer le service
sudo service nginx start
Pour vérifier que Nginx fonctionne, entrer l’adresse IP du serveur dans un navigateur http://YOUR_IP_OR_DOMAIN/ et la page par défaut de Nginx doit être visible :
Le dossier Nginx
Il est important de comprendre comment Nginx fonctionne une fois installé.
Tout d'abord toute la configuration de Nginx se trouve à l'arborescence suivante : /etc/nginx
Dans cette arborescence il y a les dossiers de configuration des hosts :
-
sites-availablecontient les fichiers de configuration des sites disponibles -
sites-enabledcontient des liens symboliques vers les configurations, danssite-available. Chaque configuration présente dans ce dossier correspondant aux sites activés.
Protéger un site par mot de passe avec l'authentification de base
Prérequis
Tout d'abord pour utiliser la "basic authentification" il faut installer un package appartenant à Apache :
sudo apt install apache2-utils
Il est nécessaire d'installer ce package car nous avons besoin de la commande htpasswd qui permet de créer un fichier .htpasswd qui contiendra tous les utilisateurs et leurs mot de passe.
Création du fichier .htpasswd et d'un utilisateur
sudo htpasswd -c /path/to/file/.htpasswd <user>
# Exemple
sudo htpasswd -c /etc/nginx/.htpasswd marc
New password:
Re-type new password:
Adding password for user marc
L'option -c permet de créé le fichier-mots-de-passe. Si fichier-mots-de-passe existe déjà, il est réécrit et tronqué.
Rediriger un nom domaine sur un container
Se placer dans le répertoire :
cd /etc/nginx/conf.d
Puis créer un fichier : <nom-de-mon-service>.conf
exemple :
nano msn.conf
Puis insérer le contenu suivant en modifiant les variables suivantes :
server {
server_name msn.chiken.ovh;
location / {
proxy_pass http://localhost:3001; # Le port exposé par ton Docker
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
listen 80;
listen [::]:80;
}
Puis redémarrer nginx :
sudo systemctl restart nginx
Pour mettre le service en HTTPS il faut exécuter la commande suivante :
certbot --nginx
Puis entrer le numéro du service correspondant.