Настройка Nginx для 1С-Битрикс

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Предлагаемые услуги
Показано 1 из 1 услугВсе 1626 услуг
Настройка Nginx для 1С-Битрикс
Простая
~1 рабочий день
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1177
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    811
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Разработка на базе Битрикс, Битрикс24, 1С для компании Development of an Online Appointment Booking Widget for a Medical Center
    564
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    747
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    655
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    976

Настройка Nginx для 1С-Битрикс

По умолчанию Nginx после установки не знает о структуре Битрикс: не настроен try_files для красивых URL, не закрыты служебные директории, не выставлены заголовки кэширования статики. Типичный результат — 404 на URL без расширения или открытый доступ к /bitrix/backup/.

Структура конфигурации под Битрикс

Официальные конфиги для Nginx + PHP-FPM доступны в репозитории Битрикс, но их часто используют без понимания. Ключевые блоки:

server {
    listen 80;
    server_name example.com www.example.com;
    root /var/www/bitrix;
    index index.php;

    charset utf-8;
    client_max_body_size 100m;

    # Красивые URL Битрикс (ЧПУ)
    location / {
        try_files $uri $uri/ /bitrix/urlrewrite.php$is_args$args;
    }

    # Прямой вызов urlrewrite
    location = /bitrix/urlrewrite.php {
        fastcgi_pass php-fpm;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }

    # PHP через FPM
    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_pass php-fpm;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
        fastcgi_read_timeout 120;
    }
}

Закрытие служебных директорий

Обязательные правила безопасности для Битрикс:

# Запрет доступа к служебным директориям
location ~* ^/bitrix/(backup|modules|php_interface|tools)/ {
    deny all;
    return 403;
}

# Запрет к .htaccess и скрытым файлам
location ~ /\. {
    deny all;
    return 404;
}

# Закрыть upload от PHP-выполнения
location ~* ^/upload/.*\.php$ {
    deny all;
    return 403;
}

Директория /upload должна отдавать файлы, но не выполнять PHP — вектор для загрузки веб-шеллов.

Кэширование статики

location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf)$ {
    expires 30d;
    add_header Cache-Control "public, immutable";
    access_log off;
}

immutable говорит браузеру: файл не изменится до истечения expires. Работает для версионированных файлов Битрикс (/bitrix/cache/css/[hash].css).

gzip-сжатие

gzip on;
gzip_vary on;
gzip_min_length 1024;
gzip_proxied any;
gzip_comp_level 5;
gzip_types
    text/plain text/css application/json
    application/javascript text/xml application/xml
    image/svg+xml;

gzip_comp_level 5 — баланс CPU/сжатие. Уровни 7–9 дают минимальный прирост при ощутимом росте нагрузки на CPU.

Composite (HTML-кэш Битрикс) и Nginx

Битрикс Composite сохраняет HTML в /bitrix/html_pages/. Nginx может отдавать эти файлы без PHP:

location / {
    # Проверяем наличие закэшированной HTML-страницы
    set $cache_path "/bitrix/html_pages${uri}";
    if (-f "${document_root}${cache_path}.html") {
        rewrite ^ ${cache_path}.html last;
    }
    try_files $uri $uri/ /bitrix/urlrewrite.php$is_args$args;
}

location ~* /bitrix/html_pages/ {
    internal;
    add_header X-Bitrix-Composite "HIT";
}

Статические страницы из HTML-кэша отдаются Nginx без запуска PHP-FPM — ускорение в 10–50 раз для незалогиненных посетителей.

Кейс: неправильный try_files

Интернет-магазин после смены сервера: все страницы каталога давали 404, главная работала. Причина: в конфиге стояло try_files $uri $uri/ @bitrix; с именованным location @bitrix, который был прописан неверно и не передавал $args. Результат: URL /catalog/electronics/?SECTION_ID=5 терял параметры. После исправления на стандартный try_files $uri $uri/ /bitrix/urlrewrite.php$is_args$args всё заработало.

Срок настройки Nginx под Битрикс с нуля: 0,5–1 день.