# Nginx

# Installation de Nginx

### Installation 

```shell
sudo apt install nginx
```

#### Lancer le service

```shell
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 :

[![image.png](https://wiki.mira-ceti.ovh/uploads/images/gallery/2023-09/scaled-1680-/OziFPmzzSuxy8hiJ-image.png)](https://wiki.mira-ceti.ovh/uploads/images/gallery/2023-09/OziFPmzzSuxy8hiJ-image.png)

### 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 :

- <div class="li">`sites-available` contient les fichiers de configuration des **sites disponibles**</div>
- <div class="li">`sites-enabled` contient des liens symboliques vers les configurations, dans `site-available`. Chaque configuration présente dans ce dossier correspondant aux **sites activés**.</div>

# 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 :

```bash
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

```bash
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 <var>fichier-mots-de-passe</var>. Si <var>fichier-mots-de-passe</var> existe déjà, il est réécrit et tronqué.

#####   

# Rediriger un nom domaine sur un container

Se placer dans le répertoire :

`<span class="s1">cd /etc/nginx/conf.d</span>`

<span class="s1">Puis créer un fichier : &lt;nom-de-mon-service&gt;.conf </span>

<span class="s1">exemple : </span>

`<span class="s1">nano msn.conf</span>`

<span class="s1">Puis insérer le contenu suivant en modifiant les variables suivantes : </span>

```
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 :

`<span class="s1">sudo systemctl restart nginx</span>`

Pour mettre le service en HTTPS il faut exécuter la commande suivante :

<span class="s1"> `certbot --nginx`</span>

<span class="s1">Puis entrer le numéro du service correspondant. </span>