Magento multisite a Nginx

Wiele osób ma problem z poprawną konfiguracją Nginx-a i obsługą wielu stron lub sklepów w Magento.
W praktyce jest to wyjątkowo proste. Magento domyślnie obsługuje te wersje za pomocą dwóch zmiennych.

/* Store or website code */
$mageRunCode = isset($_SERVER['MAGE_RUN_CODE']) ? $_SERVER['MAGE_RUN_CODE'] : '';

/* Run store or run website */
$mageRunType = isset($_SERVER['MAGE_RUN_TYPE']) ? $_SERVER['MAGE_RUN_TYPE'] : 'store';

Mage::run($mageRunCode, $mageRunType);

W przypadku Nginx-a ustawiamy je poleceniem

          fastcgi_param MAGE_RUN_TYPE $MAGE_RUN_TYPE;
          fastcgi_param MAGE_RUN_CODE $MAGE_RUN_CODE;

Najprościej to zrobić dodając na początku pliku konfiguracyjnego prostą regułę. Np w jednym z naszych sklepów wygląda to tak :

server {
	listen		*:8080;
	server_name	domena.pl domena.de;
	access_log	/var/log/nginx/access.log;
	error_log	/var/log/nginx/error.log;
	root		/var/www/domena.pl;
        set $MAGE_RUN_TYPE "";
        set $MAGE_RUN_CODE "";
        if ($host ~* ".de$") {
                  set $MAGE_RUN_TYPE "website";
                  set $MAGE_RUN_CODE "de";
        } 
.....
....
..

W tym przypadku wykrywamy że domena kończy się na de, i tym samym ustawiamy że Nginx ma ustawić dla zmiennych taki kod sklepu.

Potem już tylko w miejscu odpowiedzialnym za nasze php-fpm dodajemy :

	### php
	location ~* \.php$ {

		try_files $uri 			=404;
		fastcgi_pass 			unix:/var/run/php5-fpm.sock;
		fastcgi_index   		index.php;
		fastcgi_param   		SCRIPT_FILENAME    $document_root$fastcgi_script_name;
		fastcgi_param   		SCRIPT_NAME        $fastcgi_script_name;
		include         		fastcgi_params;
		fastcgi_read_timeout 	3600;
		fastcgi_param 			MAGE_RUN_TYPE $MAGE_RUN_TYPE;
		fastcgi_param 			MAGE_RUN_CODE $MAGE_RUN_CODE;
	}

Nie zapomnijmy tylko w samym magento stworzyć odpowiedni website o kodzie de 😉