Не так давно пришлось оптимизировать сервер у заказчика. Нужно было заменить Apache на Nginx. На официальном форуме можно найти примеры конфигурации, например http://www.magentocommerce.com/boards/viewthread/7931/ , однако использование rewrite для таких случаев всячески порицается разработчиком сервера. Замечания * Процесс сборки nginx и php описан на офсайтах * Предполагается, что php с поддержкой fast-cgi настроен и работает на 127.0.0.1:8888, а nginx на 127.0.0.1:80 * Папка, в которой лежат файлы Magento: /home/alex/www/server.com/ * Так как Nginx работает с php напрямую, а не через связку с Apache, следует обратить особое внимание на директивы для php, которые идут в .htaccess из стандартной поставки magento. Nginx не обрабатывает директивы из .htaccess и поэтому их нужно перенести в php.ini. У меня, например, перестала работать загрузка картинок к товарам, пока не добавил suhosin.session.cryptua off в php.ini. * Предполагается, что в Magento настроены ЧПУ Ниже привожу свою конфигурацию. Дополнения и комментарии всячески приветствуются. server { listen 127.0.0.1:80; server_name server.com; #Включаем сжатие gzip on; #gzip_comp_level 9; gzip_min_length 1000; gzip_proxied any; gzip_types text/plain application/xml text/html text/css text/js application/x-javascript; # Важно!!!! Ниже должна быть указана папка в которой лежит код Magento root /home/alex/www/server.com/; location / { index index.php; error_page 404 = @magento; } # Фикс для js location /js/ { index index.php; error_page 404 = @magento_js; } # Фикс для случая, когда используется расширение FOOMAN_Speedster. location ^~ /minify/ { rewrite ^/minify/([^/]+)(/.*.(js|css))$ /lib/minify/m.php?f=$2&d=$1 last; break; } location @magento { # Если fastcgi_params лежит по другому пути то заменить на свой include /etc/nginx/fastcgi_params; #Важно !!!! fastcgi_pass 127.0.0.1:8888; fastcgi_param SCRIPT_FILENAME $document_root/index.php; #Важно !!! } location @magento_js { include /etc/nginx/fastcgi_params; fastcgi_pass 127.0.0.1:8888; fastcgi_param SCRIPT_FILENAME $document_root/js/index.php; } location ~ .php$ { index index.php; include /etc/nginx/fastcgi_params; fastcgi_pass 127.0.0.12:8888; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } location ~* \.(jpg|gif|png|css|js|jpeg|ico)$ { if (-f $request_filename) { access_log off; expires 7d; } } После такой настройки плагин YSlow дает сайту уровень B по скорости. Если очень постараться и вынести всю статику на отдельный поддомен, то можно еще ускориться.
Источник