Новая версия «1С-Битрикс: Управление сайтом 9.0»

Битрикс + nginx = любовь. Apache — третий лишний


Оптимизация веб-проектов

Тема: Производительность
Описание: Группа по вопросам производительности веб-проектов.

Битрикс + nginx = любовь. Apache — третий лишний

Apache — это, по большому счёту, такой рудемент уже. И держится он только потому, что много в мире виртуальных хостингов, на которых .htaccess решает. Ну и всяких специфических расширений к нему куча (если уж случилась ситуация, что такое расширение нужно — тут да, тут без вариантов Apache).

Представим, что мы на собственном сервере, на котором имеются все возможности доступа к конфигурации. Тогда что нам мешает полностью избавиться от Apache в пользу nginx? Мне не помешало ничего smile:)

Далее я просто приведу пару подводных камней и путей из обхода, с которыми пришлось столкнуться при переходе.

Собственно, основная проблема только с ЧПУ, с тем, как его настроить. Решается просто:

Код
server {

   ...

   if (!-e $request_filename) {
      rewrite  ^(.*)$  /bitrix/urlrewrite.php last;
   }

   location ~ \.php$ {
      if (!-f $request_filename) {
         rewrite  ^(.*)/index.php$  / redirect;
      }

      ...

   }

   ...

}

Далее, наткнулся на ограничение максимального размера заголовка. Возможно, это я такой везучий, но так уж случилось у меня с настройками по умолчанию, поэтому, думаю, может и у других быть. Я решил проблему на уровне всего сервера:

Код
http {

   ...

   fastcgi_buffer_size  128k;
   fastcgi_buffers  4 256k;
   fastcgi_busy_buffers_size  256k;

   ...

}

Тесты производительности, надеюсь, будут в ближайшее время...
Емельянов Алексей
18.06.2010 09:50:58
Код
server {

   ...

   if (!-e $request_filename) {
      rewrite  ^(.*)$  /bitrix/urlrewrite.php last;
   }

   location ~ \.php$ {
      if (!-f $request_filename) {
         rewrite  ^(.*)/index.php$  / redirect;
      }

      ...

   }

   ...

}


Как-то это всё не по-нашенски, возможно сказывается долгая работа с апачем...
Usoltsev Igor
18.06.2010 10:07:34
Спасибо, Алексей
Обязательно добавьте результаты по производительности, характеристики сервера (hw, sw) и данные по текущей нагрузке - будет отличное описание настройки рабочего проекта без Apache smile:)
Сергей Реутов
18.06.2010 10:20:26
сижу репу чешу, давно желание есть от апача избавиться, но тааааак страааашно smile:o
обязательно что ни будь не учту, про что ни будь забуду ((((
Алексей Шоков
18.06.2010 11:12:51
Поднимите сервер рядом, протестируйте на нём всё smile;)
Оберюхтин Юрий
18.06.2010 13:24:32
Алексей Шоков
18.06.2010 13:54:49
Systemnik
06.07.2010 19:58:08
Код

server {
   listen ...;
   server_name domain.ru;
    
   root    /home/domain.ru;
    
   location ~ (/\.ht|/bitrix/modules|/upload/support/not_image) {
        deny all;
   }
        
   location / {
   try_files   $uri @second_check;
   }

   location @second_check {
   try_files   $uri/index.php @bitrix;
   fastcgi_pass   unix:/var/run/php-fpm/socks/domain.ru.sock;
   fastcgi_param SCRIPT_FILENAME $document_root$uri;
   include fastcgi_params;
   }

   location ~ \.php$ {
   try_files   $uri @bitrix;
   fastcgi_pass   unix:/var/run/php-fpm/socks/domain.ru.sock;
   fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
   include fastcgi_params;
    }
   
    location @bitrix {
   fastcgi_pass   unix:/var/run/php-fpm/socks/domain.ru.sock;
   include fastcgi_params;
   fastcgi_param SCRIPT_FILENAME $document_root/bitrix/urlrewrite.php;
    }   
}    


if'ами для таких вещей пользоваться не рекомендуется.
Лучше обойтись без них.
Systemnik
13.08.2010 10:18:59
Как выяснилось, корректно работает и более простой вариант:

server {
listen 80;
server_name domain.ru;

root /document/root;
index index.php index.html;

location ~ (/\.ht|/bitrix/modules|/upload/support/not_image) {
deny all;
}

location / {
try_files $uri $uri/ @bitrix;
}

location ~ \.php$ {
try_files $uri @bitrix;
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}

location @bitrix {
fastcgi_pass 127.0.0.1:9000;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root/bitrix/urlrewrite.php;
}
}


Группы на сайте создаются не только сотрудниками «1С-Битрикс», но и партнерами компании. Поэтому мнения участников групп могут не совпадать с позицией компании «1С-Битрикс».