Aller au contenu principal

Un problème avec votre serveur ? Notre équipe support est disponible pour vous aider.

Découvrir nos offres

Erreurs fréquentes par service

Ce guide recense les erreurs les plus courantes et leurs solutions pour chaque service.

Nginx

502 Bad Gateway

Cause : Le backend (PHP-FPM, Node.js, etc.) ne répond pas.

# Vérifier PHP-FPM
systemctl status php8.1-fpm

# Vérifier les logs
tail -50 /var/log/nginx/error.log

Solutions :

# Redémarrer PHP-FPM
sudo systemctl restart php8.1-fpm

# Vérifier le socket
ls -la /run/php/php8.1-fpm.sock

504 Gateway Timeout

Cause : Le backend met trop de temps à répondre.

Solutions :

# Dans nginx.conf ou le bloc location
proxy_connect_timeout 300;
proxy_send_timeout 300;
proxy_read_timeout 300;

# Pour PHP-FPM
fastcgi_read_timeout 300;

403 Forbidden

Cause : Problème de permissions ou configuration.

# Vérifier les permissions
ls -la /var/www/html/

# Corriger
sudo chown -R www-data:www-data /var/www/html
sudo chmod -R 755 /var/www/html

Vérifier la config Nginx :

location / {
index index.html index.php;
try_files $uri $uri/ =404;
}

413 Request Entity Too Large

Cause : Fichier uploadé trop gros.

# Dans nginx.conf
client_max_body_size 100M;

Configuration invalide

# Tester la configuration
sudo nginx -t

# Voir l'erreur détaillée
sudo nginx -T

Apache

AH00558: Could not reliably determine the server's fully qualified domain name

sudo nano /etc/apache2/apache2.conf

Ajouter :

ServerName localhost

AH01630: client denied by server configuration

Cause : Directive Require manquante.

<Directory /var/www/html>
Require all granted
</Directory>

AH01071: Got error 'Primary script unknown'

Cause : PHP-FPM ne trouve pas le fichier.

# Vérifier que le fichier existe
ls -la /var/www/html/index.php

# Vérifier la config PHP-FPM
cat /etc/php/8.1/fpm/pool.d/www.conf | grep "listen ="

PHP-FPM

Unable to open primary script

# Vérifier les permissions
sudo chown -R www-data:www-data /var/www/

# Vérifier que le pool écoute
ss -ln | grep php

Max children reached

Cause : Trop de requêtes simultanées.

sudo nano /etc/php/8.1/fpm/pool.d/www.conf
pm = dynamic
pm.max_children = 50
pm.start_servers = 10
pm.min_spare_servers = 5
pm.max_spare_servers = 20

Allowed memory size exhausted

sudo nano /etc/php/8.1/fpm/php.ini
memory_limit = 256M
sudo systemctl restart php8.1-fpm

MySQL / MariaDB

Access denied for user

# Se connecter en root
sudo mysql

# Créer/modifier un utilisateur
ALTER USER 'user'@'localhost' IDENTIFIED BY 'nouveau_mot_de_passe';
FLUSH PRIVILEGES;

Too many connections

# Voir les connexions actuelles
sudo mysql -e "SHOW PROCESSLIST;"

# Tuer les connexions dormantes
sudo mysql -e "SELECT CONCAT('KILL ', id, ';') FROM information_schema.processlist WHERE command = 'Sleep' AND time > 300;"

Augmenter la limite :

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
max_connections = 200

Table is marked as crashed

# Réparer une table
mysqlcheck -r nom_base nom_table -u root -p

# Réparer toutes les tables
mysqlcheck --repair --all-databases -u root -p

InnoDB: Unable to lock ./ibdata1

Cause : Plusieurs instances MySQL ou crash.

# Vérifier les processus
ps aux | grep mysql

# Tuer et redémarrer proprement
sudo systemctl stop mysql
sudo killall -9 mysqld
sudo systemctl start mysql

Can't connect to local MySQL server through socket

# Vérifier que MySQL tourne
systemctl status mysql

# Vérifier le socket
ls -la /var/run/mysqld/mysqld.sock

# Redémarrer
sudo systemctl restart mysql

Node.js

EADDRINUSE: address already in use

Cause : Le port est déjà utilisé.

# Trouver le processus
sudo lsof -i :3000
sudo ss -tlnp | grep 3000

# Tuer le processus
kill -9 PID

ENOMEM: not enough memory

Solutions :

# Augmenter le swap
sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

# Limiter la RAM de Node
node --max-old-space-size=512 app.js

EACCES: permission denied

# Éviter de lancer en root
# Utiliser un port > 1024 ou configurer les capabilities
sudo setcap 'cap_net_bind_service=+ep' $(which node)

Docker

Cannot connect to the Docker daemon

# Vérifier le service
sudo systemctl status docker
sudo systemctl start docker

# Vérifier les permissions
sudo usermod -aG docker $USER
# Déconnectez-vous et reconnectez-vous

No space left on device

# Nettoyer Docker
docker system prune -af
docker volume prune -f

# Vérifier l'espace
df -h

Container keeps restarting

# Voir les logs
docker logs --tail 100 nom_container

# Inspecter
docker inspect nom_container | grep -A 10 "State"

Port already allocated

# Trouver le conteneur utilisant le port
docker ps | grep PORT

# Ou trouver le processus hôte
sudo lsof -i :PORT

SSH

Connection refused

# Vérifier le service
sudo systemctl status sshd

# Vérifier le port
sudo ss -tlnp | grep ssh

# Vérifier le firewall
sudo ufw status

Permission denied (publickey)

# Vérifier les permissions
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
chmod 600 ~/.ssh/id_*

# Vérifier le propriétaire
chown -R $USER:$USER ~/.ssh

Host key verification failed

# Supprimer l'ancienne clé
ssh-keygen -R IP_DU_SERVEUR

Fail2ban

ERROR: NOK: ('sshd',)

# Vérifier la syntaxe
sudo fail2ban-client -d

# Vérifier les filtres
sudo fail2ban-regex /var/log/auth.log /etc/fail2ban/filter.d/sshd.conf

Unable to find a corresponding IP address

# Vérifier le backend
sudo nano /etc/fail2ban/jail.local
[DEFAULT]
backend = systemd
# ou
backend = auto

Let's Encrypt / Certbot

Challenge failed

# Vérifier que le port 80 est ouvert
sudo ufw allow 80/tcp

# Vérifier que .well-known est accessible
curl http://votredomaine.com/.well-known/acme-challenge/test

Configuration Nginx :

location /.well-known/acme-challenge/ {
root /var/www/html;
}

Too many certificates already issued

Attendez la fin du rate limit (1 semaine) ou utilisez le staging :

sudo certbot certonly --staging -d votredomaine.com

UFW Firewall

ERROR: Could not find a profile matching

# Lister les profils disponibles
sudo ufw app list

# Utiliser le port directement
sudo ufw allow 22/tcp
# au lieu de
sudo ufw allow OpenSSH

UFW ne bloque pas

# Vérifier l'ordre des règles
sudo ufw status numbered

# Les règles sont évaluées dans l'ordre
# Une règle allow en premier bloque les deny suivants

Commandes de diagnostic universelles

# Logs système récents
sudo journalctl -xe

# Logs d'un service
sudo journalctl -u nom_service -n 100

# Dernières erreurs système
dmesg | tail -50

# Tous les services en échec
systemctl --failed
Conseil

Toujours vérifier les logs en premier :

  • /var/log/syslog : Logs système
  • /var/log/nginx/error.log : Nginx
  • /var/log/apache2/error.log : Apache
  • /var/log/mysql/error.log : MySQL
  • journalctl -u service : Service systemd