Налаштування Nginx для 1С-Бітрікс

Наша компанія займається розробкою, підтримкою та обслуговуванням рішень на Бітрікс та Бітрікс24 будь-якої складності. Від простих односторінкових сайтів до складних інтернет-магазинів, CRM систем з інтеграцією 1С та телефонії. Досвід розробників підтверджено сертифікатами від вендора.
Пропоновані послуги
Показано 1 з 1 послугУсі 1626 послуг
Налаштування Nginx для 1С-Бітрікс
Проста
~1 робочий день
Часті питання

Наші компетенції:

Етапи розробки

Останні роботи

  • image_website-b2b-advance_0.png
    Розробка сайту компанії B2B ADVANCE
    1262
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Розробка веб-сайту для компанії ФІКСПЕР
    851
  • 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
    585
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    751
  • image_crm_dolbimby_434_0.webp
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    657
  • image_crm_technotorgcomplex_453_0.webp
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    989

Налаштування 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 день.