Sécurité Nginx · 7 min read · Jan 24, 2026
Conseils et astuces pour sécuriser votre serveur Web Nginx

Nginx est un serveur Web open source, léger et performant, le plus rapidement croissant dans le monde. Nginx fonctionne sur les systèmes d’exploitation Linux, Windows, Mac OS et Solaris. NGINX continue de gagner en popularité, ce qui signifie que de plus en plus de déploiements NGINX doivent être sécurisés.
Dans ce tutoriel, nous allons expliquer quelques conseils et astuces de sécurité pour le serveur Nginx.
Exigences
- Un serveur exécutant Ubuntu 18.04 ou Debian 9.
- Un mot de passe root est configuré sur votre serveur.
Installer Nginx
Tout d’abord, vous devrez installer Nginx sur votre système. Vous pouvez l’installer en exécutant la commande suivante :
apt-get install nginx -yUne fois que Nginx a été installé, vous pouvez vérifier l’état de Nginx avec la commande suivante :
systemctl status nginxVous devriez voir la sortie suivante :
? nginx.service - Un serveur Web haute performance et un serveur proxy inverse
Chargé : chargé (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
Actif : actif (en cours d'exécution) depuis dim. 2019-03-10 02:43:14 UTC; 4min 40s ago
Docs : man:nginx(8)
Processus : 2271 ExecStop=/sbin/start-stop-daemon --quiet --stop --retry QUIT/5 --pidfile /run/nginx.pid (code=exited, status=0/SUCCESS)
Processus : 2281 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
Processus : 2274 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
PID principal : 2285 (nginx)
Tâches : 2 (limite : 1111)
CGroup : /system.slice/nginx.service
??2285 nginx: processus maître /usr/sbin/nginx -g daemon on; master_process on;
??2290 nginx: processus de travail
Mar 10 02:43:14 ubuntu1804 systemd[1]: Démarrage d'un serveur Web haute performance et d'un serveur proxy inverse...
Mar 10 02:43:14 ubuntu1804 systemd[1]: nginx.service: Échec de l'analyse du PID à partir du fichier /run/nginx.pid : Argument invalide
Mar 10 02:43:14 ubuntu1804 systemd[1]: Démarré un serveur Web haute performance et un serveur proxy inverse.
Mettre à jour Nginx
Vous devrez mettre à jour votre serveur Web Nginx car de nombreuses améliorations de performance, nouvelles fonctionnalités et correctifs de sécurité sont ajoutés. La plupart des distributions Linux modernes ne viendront pas avec la dernière version de nginx dans leurs listes de paquets par défaut. Vous devrez donc mettre à niveau la dernière version de nginx via un gestionnaire de paquets. Vous pouvez mettre à jour votre serveur Web Nginx avec la commande suivante :
apt-get update -y
apt-get install nginx --reinstall -yPrévenir la divulgation d’informations
Tout d’abord, vous devrez empêcher Nginx de divulguer ses informations de version.
Par défaut, Nginx affiche son nom et sa version dans les en-têtes HTTP.
Vous pouvez le vérifier avec la commande suivante :
curl -I http://localhostVous devriez voir la sortie suivante :
HTTP/1.1 200 OK
Server: nginx/1.14.0 (Ubuntu)
Date: Sam, 09 Mar 2019 15:28:01 GMT
Content-Type: text/html
Content-Length: 10918
Last-Modified: Ven, 01 Fév 2019 16:05:17 GMT
Connection: keep-alive
ETag: "5c546e3d-2aa6"
Accept-Ranges: bytes
Dans la sortie ci-dessus, vous devriez voir la version de Nginx et du système d’exploitation.
Vous pouvez cacher cette information en éditant le fichier /etc/nginx/nginx.conf :
nano /etc/nginx/nginx.confAjoutez la ligne server_tokens off à l’intérieur de la partie configuration http :
http {
##
# Paramètres de base
##
server_tokens off;
Enregistrez et fermez le fichier lorsque vous avez terminé. Ensuite, redémarrez le serveur Web Nginx pour appliquer les modifications :
systemctl restart nginxMaintenant, exécutez à nouveau la commande curl :
curl -I http://localhostVous devriez voir la sortie suivante :
HTTP/1.1 200 OK
Server: nginx
Date: Sam, 09 Mar 2019 15:33:31 GMT
Content-Type: text/html
Content-Length: 10918
Last-Modified: Ven, 01 Fév 2019 16:05:17 GMT
Connection: keep-alive
ETag: "5c546e3d-2aa6"
Accept-Ranges: bytes
Restreindre les IPs de l’accès
Nginx est livré avec un module simple appelé ngx_http_access_module pour autoriser ou refuser une adresse IP spécifique.
Si vous souhaitez autoriser Nginx à partir de 172.16.0.0/16 et refuser d’autres sous-réseaux. Ensuite, ouvrez le fichier /etc/nginx/sites-enabled/default :
nano /etc/nginx/sites-enabled/defaultApportez les modifications suivantes à l’intérieur du bloc serveur :
server {
listen 80 default_server;
listen [::]:80 default_server;
allow 172.16.0.0/16;
deny all;
Enregistrez et fermez le fichier lorsque vous avez terminé. Ensuite, redémarrez Nginx pour appliquer ces modifications :
systemctl restart nginxMaintenant, essayez d’accéder à votre serveur Nginx à partir d’une autre plage d’adresses IP comme 192.168.0.102.
Ensuite, vérifiez le journal Nginx avec la commande suivante :
tail -f /var/log/nginx/error.logVous devriez obtenir un accès interdit dans la sortie suivante :
2019/03/09 16:13:01 [error] 11589#11589: *1 accès interdit par règle, client: 192.168.0.102, serveur: _, requête: "GET /test/ HTTP/1.1", hôte: "172.16.0.122"
Sécuriser Nginx avec TLS
TLS (Transport Layer Security) est le successeur de SSL (Secure Socket Layer). Il fournit un HTTPS plus fort et plus efficace et contient plus d’améliorations telles que la confidentialité parfaite, la compatibilité avec les suites de chiffrement OpenSSL modernes et HSTS. Ce tutoriel montre comment activer un certificat SSL auto-signé dans Nginx. Si vous souhaitez utiliser un certificat Let’s Encrypt à la place, jetez un œil ici : https://www.howtoforge.com/tutorial/nginx-with-letsencrypt-ciphersuite/
Tout d’abord, créez un répertoire pour SSL avec la commande suivante :
mkdir /etc/nginx/ssl/Ensuite, générez une clé et un certificat avec la commande suivante :
cd /etc/nginx/ssl/Tout d’abord, générez la clé avec la commande suivante :
openssl genrsa -aes256 -out nginx.key 1024Vous devriez voir la sortie suivante :
Génération de la clé privée RSA, module de 1024 bits
...++++++
.............................++++++
e est 65537 (0x010001)
Entrez la phrase secrète pour nginx.key :
Vérification - Entrez la phrase secrète pour nginx.key :
Ensuite, générez le csr avec la commande suivante :
openssl req -new -key nginx.key -out nginx.csrFournissez toutes les informations comme indiqué ci-dessous :
Génération de la clé privée RSA, module de 1024 bits
...++++++
.............................++++++
e est 65537 (0x010001)
Entrez la phrase secrète pour nginx.key :
Vérification - Entrez la phrase secrète pour nginx.key :
root@ubuntu1804:~# openssl req -new -key nginx.key -out nginx.csr
Entrez la phrase secrète pour nginx.key :
Vous allez être invité à entrer des informations qui seront incorporées
à votre demande de certificat.
Ce que vous allez entrer est ce qu'on appelle un Nom Distingué ou DN.
Il y a pas mal de champs mais vous pouvez laisser certains vides
Pour certains champs, il y aura une valeur par défaut,
Si vous entrez '.', le champ sera laissé vide.
-----
Nom du pays (code à 2 lettres) [AU]:IN
Nom de l'État ou de la province (nom complet) [Some-State]:Gujarat
Nom de la localité (par exemple, ville) []:Junagadh
Nom de l'organisation (par exemple, entreprise) [Internet Widgits Pty Ltd]:IT
Nom de l'unité organisationnelle (par exemple, section) []:IT
Nom commun (par exemple, FQDN du serveur ou VOTRE nom) []:HITESH
Adresse e-mail []:[email protected]
Veuillez entrer les 'attributs' supplémentaires suivants
à envoyer avec votre demande de certificat
Un mot de passe de défi []:admin
Un nom d'entreprise optionnel []:IT
Ensuite, signez le certificat avec la commande suivante :
openssl x509 -req -days 365 -in nginx.csr -signkey nginx.key -out nginx.crtVous devriez voir la sortie suivante :
Signature ok
sujet=C = IN, ST = Gujarat, L = Junagadh, O = IT, OU = IT, CN = HITESH, emailAddress = [email protected]
Obtention de la clé privée
Entrez la phrase secrète pour nginx.key :
Ensuite, ouvrez le fichier d’hôte virtuel par défaut de Nginx et définissez le certificat :
nano /etc/nginx/sites-enabled/defaultApportez les modifications suivantes :
server {
listen 192.168.0.100:443 ssl;
root /var/www/html;
index index.html index.htm index.nginx-debian.html;
server_name _;
ssl_certificate /etc/nginx/ssl/nginx.crt;
ssl_certificate_key /etc/nginx/ssl/nginx.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
Enregistrez et fermez le fichier lorsque vous avez terminé. Ensuite, redémarrez le serveur Nginx pour appliquer ces modifications :
systemctl restart nginxProtéger le répertoire par mot de passe
Lors de la configuration d’un serveur Web Nginx, vous pouvez également protéger un répertoire spécifique par un mot de passe. Vous pouvez le faire en utilisant le fichier .htpasswd.
Pour ce faire, créez le fichier passwd et ajoutez l’utilisateur avec la commande suivante :
mkdir /etc/nginx/.htpasswd
htpasswd -c /etc/nginx/.htpasswd/passwd adminVous devriez voir la sortie suivante :
Nouveau mot de passe :
Ressaisissez le nouveau mot de passe :
Ajout du mot de passe pour l'utilisateur admin
Ensuite, créez un répertoire de test à l’intérieur de la racine Web Nginx avec la commande suivante :
mkdir /var/www/html/testEnsuite, donnez la propriété à l’utilisateur www-data avec la commande suivante :
chown -R www-data:www-data /var/www/html/testEnsuite, ouvrez le fichier d’hôte virtuel par défaut de Nginx avec la commande suivante :
nano /etc/nginx/sites-enabled/defaultEnsuite, protégez le répertoire de test comme indiqué ci-dessous :
location /test {
auth_basic "Restreint";
auth_basic_user_file /etc/nginx/.htpasswd/passwd;
Enregistrez et fermez le fichier lorsque vous avez terminé. Ensuite, redémarrez le service Nginx pour appliquer ces modifications :
systemctl restart nginxEnsuite, ouvrez votre navigateur Web et tapez l’URL http://your-server-ip/test. Vous serez invité à entrer un nom d’utilisateur et un mot de passe pour accéder au répertoire de test comme indiqué dans la page suivante :

Félicitations ! vous avez réussi à sécuriser votre serveur Nginx sur le serveur Ubuntu 18.04. J’espère que cela vous aidera à protéger votre application hébergée sur le serveur Web Nginx. N’hésitez pas à me poser des questions si vous en avez. Pour plus d’informations, vous pouvez vous référer à la documentation de sécurité de Nginx.
Recevez de nouveaux articles dans votre boîte de réception.
Aucun spam. Désabonnez-vous à tout moment.