Aller au contenu

Nginx : installation sur Ubuntu

Nginx est un serveur web et un reverse proxy performant. Ce guide l’installe sur Ubuntu 24.04 et 26.04. Les exemples utilisent des noms génériques (exemple.com).

Ubuntu Paquet nginx
24.04 Nginx 1.24
26.04 Nginx 1.28

Pour une version plus récente que celle d’Ubuntu, le projet propose un dépôt officiel (nginx.org/en/linux_packages.html). Ce dépôt a une organisation de fichiers légèrement différente (conf.d/ sans sites-available) : les guides de cette rubrique suivent l’organisation du paquet Ubuntu.

Fenêtre de terminal
sudo apt update
sudo apt install nginx
nginx -v

Le service démarre automatiquement :

Fenêtre de terminal
sudo systemctl status nginx
sudo systemctl enable --now nginx
curl -I http://localhost # 200 OK

Nginx enregistre des profils pour UFW :

Fenêtre de terminal
sudo ufw app list # Nginx Full, Nginx HTTP, Nginx HTTPS, OpenSSH
sudo ufw allow 'Nginx Full' # ports 80 et 443
sudo ufw allow OpenSSH # à ne pas oublier avant d'activer UFW
sudo ufw status
Profil Ports
Nginx HTTP 80
Nginx HTTPS 443
Nginx Full 80 et 443
Élément Emplacement
Configuration principale /etc/nginx/nginx.conf
Sites disponibles /etc/nginx/sites-available/
Sites activés (liens symboliques) /etc/nginx/sites-enabled/
Fragments réutilisables /etc/nginx/snippets/
Configurations supplémentaires /etc/nginx/conf.d/*.conf
Racine par défaut /var/www/html
Journaux /var/log/nginx/access.log, /var/log/nginx/error.log
Utilisateur des processus www-data

Toute modification se teste avant d’être appliquée :

Fenêtre de terminal
sudo nginx -t # vérifie la syntaxe
sudo systemctl reload nginx # applique sans interruption
sudo nginx -T | less # affiche la configuration complète, includes résolus
Fenêtre de terminal
sudo mkdir -p /var/www/exemple.com
echo '<h1>Bonjour</h1>' | sudo tee /var/www/exemple.com/index.html
sudo tee /etc/nginx/sites-available/exemple.com <<'CONF'
server {
listen 80;
listen [::]:80;
server_name exemple.com www.exemple.com;
root /var/www/exemple.com;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
CONF
sudo ln -s /etc/nginx/sites-available/exemple.com /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx
curl -H "Host: exemple.com" http://localhost

Pour désactiver le site par défaut (page « Welcome to nginx ») : sudo rm /etc/nginx/sites-enabled/default (le fichier reste dans sites-available).

Les processus Nginx tournent sous www-data : le site doit lui être lisible.

Fenêtre de terminal
sudo chown -R $USER:www-data /var/www/exemple.com
sudo chmod -R u=rwX,g=rX,o=rX /var/www/exemple.com
Fenêtre de terminal
sudo apt update && sudo apt upgrade # mises à jour de sécurité avec le système
sudo nginx -t && sudo systemctl restart nginx
Fenêtre de terminal
sudo apt purge nginx nginx-common
sudo apt autoremove
Symptôme Piste
bind() to 0.0.0.0:80 failed (98: Address already in use) Un autre serveur écoute sur le port 80 (souvent Apache) : sudo ss -tlnp | grep ':80'
403 Forbidden Droits insuffisants pour www-data, ou pas de fichier index
404 Not Found alors que le fichier existe root incorrect, ou site non activé (sites-enabled)
nginx -t signale unknown directive Directive inconnue de cette version ou module absent
Job for nginx.service failed sudo journalctl -u nginx -n 50 et sudo nginx -t

Ubuntu 24.04 et 26.04 : différences à connaître

Section intitulée « Ubuntu 24.04 et 26.04 : différences à connaître »

Les commandes d’installation sont identiques. Les différences portent sur la configuration, déjà signalées ici et détaillées dans HTTPS et certificats.