Конфигурация Nginx + PHP + FastCGI для Magento |
[исправить] |
Не так давно пришлось оптимизировать сервер у заказчика. Нужно было заменить 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 по скорости. Если очень постараться и
вынести всю статику на отдельный поддомен, то можно еще ускориться.
|
|
|
|
Раздел: Корень / Администратору / Сетевые сервисы / WWW, Apache httpd / Редирект, mod_rewrite |
|
2.4, inste (?), 02:25, 16/06/2009 [^] [^^] [^^^] [ответить]
| +/– |
+1
Unix domain socket серьезно повышает производительность.
| |
|
1.5, Эргил (?), 05:55, 18/06/2009 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
а смысл писать, что это nginx+php+fastcgi, если кто у нас там за php отвечает не написано?
spawn-fcgi?
свой скрипт?
| |
|
2.6, angra (ok), 09:56, 18/06/2009 [^] [^^] [^^^] [ответить]
| +/– |
А если еще вспомнить, что пых fcgi ничем не отличается от пыха просто cgi, то становится совсем смешно.
| |
|
|
4.8, Владимир (??), 23:13, 08/08/2009 [^] [^^] [^^^] [ответить]
| +/– |
НАРОД. КТО может РЕАЛЬНО помочь (платно) оптимизировать magento??? (сейчас сильно медлено грузятся страницы).
| |
|
|
|
|