Gran respuesta slarek. Hicimos algo muy similar. En lugar de editar index.php, configuramos carpetas separadas fuera de la base de código de magento e incluimos mage.php de esas carpetas, y luego editamos el etc_dir (y otros directorios) como en su método anterior.
estructura de carpetas:
/ www / client1
/ www / client2
/ www / client3
/ www / clientX
/ www / magento
Dentro de cada una de las carpetas del cliente están:
- /www/clientx/etc/local.xml (con base de datos única definida y redis db única)
- / www / clientx / etc / modules (este es un enlace simbólico a / www / magento / app / etc / modules)
- /www/clientx/index.php
en /www/clientx/index.php
define('MAGENTO_ROOT', '/www/magento');
... (resto de index.php es lo de siempre) ...
$client = isset($_SERVER['CLIENT_ID']) ? $_SERVER['CLIENT_ID'] : '';]
Mage::run($mageRunCode, $mageRunType, array('etc_dir'=>'../'.$client));
Establecimos
$_SERVER['CLIENT_ID'] in Nginx with
`fastcgi_param CLIENT_ID clientx; `