Avant d'installer Nginx, on va créer un conteneur LXC sur Proxmox.
Les paramètres importants :
Une fois le conteneur créé, connectez-vous et mettez à jour le système :
apt update && apt upgrade -y
Vérifiez la configuration réseau actuelle :
ip a
cat /etc/network/interfaces
Éditez le fichier de configuration réseau :
nano /etc/network/interfaces
Contenu recommandé :
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 192.168.1.100/24
gateway 192.168.1.1
⚠️ Important : La gateway (adresse de votre routeur) est indispensable pour que le serveur soit accessible depuis l'extérieur. Sans elle, votre LXC peut communiquer en local mais pas avec internet.
Appliquez les changements et vérifiez la connectivité :
systemctl restart networking
ping -c 4 google.com
apt install nginx -y
Démarrez le service et activez-le au démarrage :
systemctl start nginx
systemctl enable nginx
Vérifiez que Nginx fonctionne :
systemctl status nginx
Test rapide : Ouvrez un navigateur et rendez-vous sur http://192.168.1.100. Vous devriez voir la page par défaut de Nginx.
Sauvegardez d'abord la configuration originale :
cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.backup
Éditez le fichier de configuration :
nano /etc/nginx/nginx.conf
Contenu de la configuration :
user www-data;
worker_processes 1;
pid /run/nginx.pid;
error_log /var/log/nginx/error.log;
include /etc/nginx/modules-enabled/*.conf;
events {
worker_connections 512;
}
http {
sendfile on;
tcp_nopush on;
keepalive_timeout 65;
types_hash_max_size 2048;
server_tokens off;
include /etc/nginx/mime.types;
default_type application/octet-stream;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
gzip on;
gzip_types text/css text/javascript application/javascript application/json;
gzip_min_length 1000;
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
Créez le fichier de configuration pour votre site :
nano /etc/nginx/sites-available/wrajaelhak.fr
Contenu de la configuration :
server {
listen 80;
listen [::]:80;
server_name wrajaelhak.fr www.wrajaelhak.fr;
root /var/www/wrajaelhak.fr;
index index.html index.htm;
access_log /var/log/nginx/wrajaelhak-access.log;
error_log /var/log/nginx/wrajaelhak-error.log;
location / {
try_files $uri $uri/ =404;
}
location ~* \.(css|js|jpg|jpeg|png|gif|ico|svg|woff|woff2)$ {
expires 30d;
add_header Cache-Control "public, immutable";
}
location ~ /\. {
deny all;
}
}
💡 Note : Cette configuration est en HTTP uniquement. Certbot ajoutera automatiquement la configuration HTTPS lors de la génération du certificat SSL.
Nginx lit uniquement les fichiers présents dans le dossier sites-enabled/ pour afficher les sites. Plutôt que de mettre la configuration directement dans ce dossier, on la place dans sites-available/ et on crée un raccourci (lien symbolique) vers sites-enabled/.
L'avantage : si vous voulez désactiver le site temporairement, vous supprimez juste le raccourci. La configuration reste intacte dans sites-available/ et vous pouvez réactiver le site à tout moment.
ln -s /etc/nginx/sites-available/wrajaelhak.fr /etc/nginx/sites-enabled/
mkdir -p /var/www/wrajaelhak.fr
chown -R www-data:www-data /var/www/wrajaelhak.fr
chmod -R 755 /var/www/wrajaelhak.fr
Testez la configuration Nginx :
nginx -t
Si tout est OK, rechargez Nginx :
systemctl reload nginx
Avant de pouvoir transférer des fichiers, il faut configurer SSH sur le conteneur.
systemctl status ssh
Si le serveur SSH n'est pas installé :
apt install openssh-server -y
systemctl start ssh
systemctl enable ssh
Par défaut, la connexion root par mot de passe est désactivée. Pour l'activer temporairement :
nano /etc/ssh/sshd_config
Trouvez et modifiez cette ligne :
PermitRootLogin yes
Puis redémarrez SSH :
systemctl restart ssh
⚠️ Sécurité : Une fois vos fichiers transférés, pensez à désactiver la connexion root par mot de passe et utiliser des clés SSH à la place.
Depuis votre PC :
scp -r /chemin/vers/mon-site/* root@192.168.1.100:/var/www/wrajaelhak.fr/
Après le transfert, attribuez les fichiers à l'utilisateur Nginx :
chown -R www-data:www-data /var/www/wrajaelhak.fr
⚠️ Important : Cette étape doit être faite AVANT de générer le certificat SSL.
Chez votre registrar (OVH, Cloudflare, etc.) configurez les enregistrements DNS :
| Type | Nom | Valeur |
|---|---|---|
| A | @ | Votre_IP_Publique |
| A | www | Votre_IP_Publique |
Pour trouver votre IP publique :
curl ifconfig.me
La propagation DNS peut prendre entre 24h-48h. Vous pouvez vérifier avec :
dig wrajaelhak.fr
⚠️ Important : Cette étape doit être faite AVANT de générer le certificat SSL.
Sur votre routeur/box, redirigez les ports vers votre LXC :
| Port externe | Port interne | Protocole | Destination |
|---|---|---|---|
| 80 | 80 | TCP | 192.168.1.100 |
| 443 | 443 | TCP | 192.168.1.100 |
La procédure varie selon votre box/routeur. Cherchez une section "NAT", "Port Forwarding" ou "Redirection de ports" dans l'interface d'administration.
⚠️ Prérequis : Les étapes 5 (DNS) et 6 (Port Forwarding) doivent être terminées. Certbot a besoin d'accéder à votre serveur depuis internet pour valider le certificat.
apt install certbot python3-certbot-nginx -y
certbot --nginx -d wrajaelhak.fr -d www.wrajaelhak.fr
Suivez les instructions à l'écran. Certbot va :
Les certificats Let's Encrypt expirent après 90 jours. Certbot configure automatiquement un renouvellement. Vous pouvez le tester avec :
certbot renew --dry-run
nginx -t
systemctl reload nginx
systemctl restart nginx
tail -f /var/log/nginx/wrajaelhak-access.log
tail -f /var/log/nginx/wrajaelhak-error.log
rm /etc/nginx/sites-enabled/wrajaelhak.fr
ln -s /etc/nginx/sites-available/wrajaelhak.fr /etc/nginx/sites-enabled/
certbot certificates
certbot renew
systemctl status nginxnginx -ttail -f /var/log/nginx/error.lognslookup wrajaelhak.fr/var/log/letsencrypt/letsencrypt.logLe serveur backend ne répond pas. Vérifiez que votre application est lancée.
Problème de permissions. Vérifiez :
chown -R www-data:www-data /var/www/wrajaelhak.fr
chmod -R 755 /var/www/wrajaelhak.fr
systemctl status sshss -tlnp | grep 22