Plusieurs sites sur un seul serveur
Comment héberger une dizaine de sites sur un seul VPS : arborescence des répertoires, configurations et utilisateurs séparés, certificat partagé et estimation de la charge selon le grade.
Mis à jour le 23 août 2026
Une seule adresse IPv4 publique peut servir n'importe quel nombre de domaines : le serveur web route les requêtes selon l'en-tête Host. La limite ne vient pas des adresses, mais de la mémoire et du disque de votre offre.
Organisation
Conservez un seul modèle, sinon dans six mois vous ne saurez plus quel site appartient à qui :
/var/www/example.ru/public
/var/www/example.ru/logs
/var/www/shop.ru/public
/var/www/shop.ru/logs
Gardez un fichier de configuration distinct par site : /etc/nginx/sites-available/<domain>, activé via un lien symbolique dans sites-enabled. Désactiver un site revient alors à supprimer un lien symbolique et à recharger, au lieu de chercher le bon bloc dans un fichier partagé.
Configuration
server {
listen 80;
server_name example.ru www.example.ru;
root /var/www/example.ru/public;
index index.html index.php;
access_log /var/www/example.ru/logs/access.log;
}
Configurez aussi un « site par défaut » pour les domaines inconnus, sinon la première configuration par ordre alphabétique s'ouvrira pour tout domaine tiers pointant vers votre adresse :
server {
listen 80 default_server;
server_name _;
return 444;
}
Séparation des permissions
Si les sites appartiennent à des clients ou à des projets différents, ne leur donnez pas un utilisateur commun : une faille dans un script donnerait sinon accès à tous les autres.
useradd -r -d /var/www/example.ru -s /usr/sbin/nologin site-example
chown -R site-example:www-data /var/www/example.ru
chmod 750 /var/www/example.ru
Pour PHP, créez un pool FPM distinct par site avec son propre user et son propre listen — voir PHP-FPM. Séparez aussi vos bases de données : utilisateurs et privilèges.
Certificats
Une seule exécution de certbot couvre plusieurs domaines à la fois :
certbot --nginx -d example.ru -d www.example.ru -d shop.ru -d www.shop.ru
Le renouvellement est mutualisé, un seul timer. Détails — Let's Encrypt.
Combien de sites tiendront
Comptez en mémoire, pas en nombre de domaines. Un site statique ne coûte presque rien ; un site CMS avec base de données coûte des centaines de mégaoctets.
| Offre | Mémoire | Repère |
|---|---|---|
| VDS-1 (2 GB) | 2 GB | 1–2 sites CMS ou une dizaine de sites statiques |
| VDS-2 (4 GB) | 4 GB | 3–5 sites CMS |
| VDS-3 (8 GB) | 8 GB | 8–12 sites CMS |
Le disque est fini lui aussi : 40 GB sur VDS-1, 250 GB sur VDS-6. Vous ne pouvez que passer à une offre supérieure, en payant la différence pour les jours restants de la période payée.
Erreurs courantes
| Symptôme | Cause |
|---|---|
| Tous les domaines affichent le même site | server_name ne correspondait pas, le premier bloc a donc traité la requête |
| Journaux de tous les sites dans un seul fichier | access_log n'est pas défini dans le bloc du site |
| Un site a tout fait tomber | Pool PHP-FPM partagé sans limites |
| Disque plein | Journaux et sauvegardes sur le même disque — configurez logrotate |
Avant d'ajouter un nouveau site, consultez les graphiques de mémoire de la semaine passée dans « Vue d'ensemble » du panneau à l'adresse
/hosting/vds/m/<id>. Si le pic est déjà au plafond, un nouveau site sera la cause des plantages, pas la conséquence.