Представим, что мы на собственном сервере, на котором имеются все возможности доступа к конфигурации. Тогда что нам мешает полностью избавиться от Apache в пользу nginx? Мне не помешало ничего
Далее я просто приведу пару подводных камней и путей из обхода, с которыми пришлось столкнуться при переходе.
Собственно, основная проблема только с ЧПУ, с тем, как его настроить. Решается просто:
Код
| 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; ... } |
Тесты производительности, надеюсь, будут в ближайшее время...







...
if (!-e $request_filename) {
rewrite ^(.*)$ /bitrix/urlrewrite.php last;
}
location ~ \.php$ {
if (!-f $request_filename) {
rewrite ^(.*)/index.php$ / redirect;
}
...
}
...
}
Как-то это всё не по-нашенски, возможно сказывается долгая работа с апачем...
Обязательно добавьте результаты по производительности, характеристики сервера (hw, sw) и данные по текущей нагрузке - будет отличное описание настройки рабочего проекта без Apache
обязательно что ни будь не учту, про что ни будь забуду ((((
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'ами для таких вещей пользоваться не рекомендуется.
Лучше обойтись без них.
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;
}
}