Puede usar tecnología de contenedores como Docker (vea el comentario de Steffen Ullrich) para separarlos entre sí. Todavía comparten un kernel (el de la máquina host) pero no pueden acceder a los archivos almacenados en otros contenedores o en el sistema host, a menos que estén configurados explícitamente.
Tu configuración podría ser la siguiente:
Su servidor como máquina host, ejecutando un software contenedor y un proxy inverso. Cada aplicación web está alojada en un contenedor diferente y el proxy inverso de su máquina host reenvía las solicitudes entrantes a su destino (una de las aplicaciones web alojadas).
Suponga que las aplicaciones web alojadas A y B, donde sus nombres de host son a.com y b.com. Ambos están aislados en sus contenedores. Su puerto HTTP está vinculado a algunos puertos P (A) y P (B) de su máquina host respectivamente. El puerto HTTP de las máquinas host se dice que el proxy inverso reenvía las conexiones para a.com a P (A) y b.com a P (B).
Esto es muy básico y se puede mejorar masivamente, estoy seguro.