Alojar varios dominios en una misma máquina es normal y eficiente. Lo que decide si es seguro es cuán separados estén: directorios propios, usuarios de base propios y, a ser posible, usuarios del sistema propios.
La disposición
/var/www/
site-one/ public/ storage/
site-two/ public/ storage/
site-three/ public/ storage/
Cada raíz de documentos apunta a su propio directorio público. Nada por encima es alcanzable desde la web, así que la configuración y el almacenamiento quedan fuera de donde podría llegar una URL.
Un bloque de servidor por dominio
server {
listen 443 ssl;
server_name one.example;
root /var/www/site-one/public;
include snippets/php.conf;
}
Mantenga separadas las bases de datos
CREATE DATABASE site_one CHARACTER SET utf8mb4;
CREATE USER 'site_one'@'localhost' IDENTIFIED BY '...';
GRANT ALL PRIVILEGES ON site_one.* TO 'site_one'@'localhost';
Un solo usuario de base con acceso a todas las bases significa que un único sitio comprometido las lee y las escribe todas. Es el error más común en un servidor con varios sitios y convierte un incidente en todos ellos a la vez.
Pools de PHP separados, si puede
Un pool por sitio, cada uno corriendo con su propio usuario, significa que un sitio no puede leer los archivos de otro aunque compartan máquina. También impide que el tráfico de un sitio agote los trabajadores que los demás necesitan.
; /etc/php/8.3/fpm/pool.d/site-one.conf
[site-one]
user = site-one
group = site-one
listen = /run/php/site-one.sock
pm = ondemand
pm.max_children = 10
Los certificados
sudo certbot --nginx -d one.example -d www.one.example
sudo certbot --nginx -d two.example -d www.two.example
Certificados separados, y no uno que lo cubra todo. Así la renovación de un dominio no puede tumbar a los demás, y el certificado no publica la lista de todos los sitios que usted aloja.
