Geralmente, bons provedores de hospedagem na Web usam o Cloud Linux para fornecer isolamento e limites de recursos à hospedagem de vários locatários. No entanto, na sua escala (12) eu sugiro que você vá a rota docker. Ter um único contêiner (ou dois) por cliente para servir o site parece bom para mim. Não tem certeza de qual preocupação de segurança você está se referindo, mas está em ótima forma se você:
- crie uma rede de ponte de encaixe separada por cliente
- cada contêiner deve ter um UID exclusivo e não ser executado como raiz
- seu balanceador de carga deve estar fazendo a camada 7 e lendo o cabeçalho do host para saber para qual porta do contêiner enviar tráfego. Se o TLS estiver envolvido, você deve terminar no LB.
- seu servidor precisará de muito mais recursos do que se eles compartilhassem apenas uma única pilha LAMP. Por exemplo, cada container mysql consumirá pelo menos 100MB de ram
Se seus clientes compartilham um banco de dados (por qualquer motivo), eles obviamente devem ter concessões estritas para garantir que o usuário não possa consultar bancos de dados aos quais não deveria ter acesso. Bancos de dados que SOMENTE UMA consultas do cliente devem ser separadas em outro contêiner para máxima segurança. Manter SOMENTE o banco de dados SHARED no contêiner compartilhado.