Ótima resposta slarek. Fizemos algo muito semelhante. Em vez de editar o index.php, configuramos pastas separadas fora da base de código do magento, incluímos o mage.php dessas pastas e depois editamos o etc_dir (e outros diretórios) como no método acima.
estrutura de pastas:
/ www / client1
/ www / client2
/ www / client3
/ www / clientX
/ www / magento
Dentro de cada uma das pastas do cliente estão:
- /www/clientx/etc/local.xml (com banco de dados exclusivo definido e redis db exclusivo)
- / www / clientx / etc / modules (este é um link sym para / www / magento / app / etc / modules)
- /www/clientx/index.php
em /www/clientx/index.php
define('MAGENTO_ROOT', '/www/magento');
... (o restante do index.php é comercial como sempre) ...
$client = isset($_SERVER['CLIENT_ID']) ? $_SERVER['CLIENT_ID'] : '';]
Mage::run($mageRunCode, $mageRunType, array('etc_dir'=>'../'.$client));
Montamos
$_SERVER['CLIENT_ID'] in Nginx with
`fastcgi_param CLIENT_ID clientx; `