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 😉