Главная > Nginx > Конфигурация Nginx + PHP + FastCGI для Magento

Конфигурация Nginx + PHP + FastCGI для Magento

 

* Предполагается, что 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 по скорости. Если очень постараться и
 вынести всю статику на отдельный поддомен, то можно еще ускориться.
Не так давно пришлось оптимизировать сервер у заказчика. Нужно было заменить 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 по скорости. Если очень постараться и
 вынести всю статику на отдельный поддомен, то можно еще ускориться.
В закладки:
  • Print this article!
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google Bookmarks
  • BarraPunto
  • Bitacoras.com
  • BlinkList
  • blogmarks
  • BlogMemes Fr
  • BlogMemes Sp
  • Blogosphere News
  • blogtercimlap
  • co.mments
  • connotea
  • Current
  • Design Float
  • Diigo
  • DotNetKicks
  • Fark
  • Faves
  • Fleck
  • Gwar
  • HackerNews
  • Haohao
  • Identi.ca
  • IndianPad
  • Internetmedia
  • LinkArena
  • LinkedIn
  • Linkter
  • MisterWong.DE
  • MSN Reporter
  • muti
  • NewsVine
  • Yahoo! Bookmarks

Похожие записи блога:

Nginx , , , ,

  1. Комментариев пока нет.
  1. Трекбеков пока нет.