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

Наша компанія займається розробкою, підтримкою та обслуговуванням рішень на Бітрікс та Бітрікс24 будь-якої складності. Від простих односторінкових сайтів до складних інтернет-магазинів, CRM систем з інтеграцією 1С та телефонії. Досвід розробників підтверджено сертифікатами від вендора.
Пропоновані послуги
Показано 1 з 1 послугУсі 1626 послуг
Налаштування Apache для 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

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

Apache залишається поширеним вибором для Бітрікс — особливо в офіційному Bitrix Environment, де він працює у зв'язці з Nginx (Apache обробляє PHP, Nginx стоїть перед ним як reverse proxy). Самостійне налаштування Apache без розуміння особливостей Бітрікс призводить до проблем із .htaccess, модулем mod_rewrite і продуктивністю.

Apache як backend за Nginx

У Bitrix Environment стандартна схема: Nginx слухає 80/443, проксує PHP-запити на Apache (порт 8080):

# nginx: передаємо PHP на Apache
location ~ \.php$ {
    proxy_pass http://127.0.0.1:8080;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

Apache приймає запит, обробляє через mod_php або mod_proxy_fcgi (PHP-FPM). При такій схемі Apache не займається статикою — Nginx віддає її напряму.

Конфігурація VirtualHost

<VirtualHost *:8080>
    ServerName example.com
    DocumentRoot /var/www/bitrix

    <Directory /var/www/bitrix>
        Options -Indexes +FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>

    # Прискорення PHP через FPM
    <FilesMatch "\.php$">
        SetHandler "proxy:unix:/run/php/php8.1-fpm-bitrix.sock|fcgi://localhost"
    </FilesMatch>

    ErrorLog ${APACHE_LOG_DIR}/bitrix_error.log
    CustomLog ${APACHE_LOG_DIR}/bitrix_access.log combined
</VirtualHost>

AllowOverride All — обов'язково для роботи .htaccess Бітрікс. Без цього ЧПУ (urlrewrite) не працює.

.htaccess Бітрікс та mod_rewrite

Бітрікс створює .htaccess автоматично при увімкненні ЧПУ. Основні правила:

Options -Indexes
AddDefaultCharset UTF-8

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /

    # Бітрікс composite (HTML-кеш)
    RewriteCond %{DOCUMENT_ROOT}/bitrix/html_pages/%{HTTP_HOST}/%{REQUEST_URI}/__index.html -f
    RewriteRule ^ /bitrix/html_pages/%{HTTP_HOST}/%{REQUEST_URI}/__index.html [L]

    # Перенаправлення на urlrewrite.php
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ /bitrix/urlrewrite.php [L]
</IfModule>

mod_rewrite має бути ввімкнений: a2enmod rewrite && systemctl reload apache2.

Закриття службових директорій

# У /var/www/bitrix/bitrix/.htaccess
<IfModule mod_authz_core.c>
    Require all denied
</IfModule>

# Заборона виконання PHP в upload
<Directory /var/www/bitrix/upload>
    <FilesMatch "\.php$">
        Require all denied
    </FilesMatch>
</Directory>

Продуктивність Apache під Бітрікс

MPM event + PHP-FPM — рекомендована зв'язка для production:

# /etc/apache2/mods-enabled/mpm_event.conf
<IfModule mpm_event_module>
    StartServers          2
    MinSpareThreads      25
    MaxSpareThreads      75
    ThreadLimit          64
    ThreadsPerChild      25
    MaxRequestWorkers   150
    MaxConnectionsPerChild 1000
</IfModule>

MaxConnectionsPerChild 1000 — Apache перезапускає дочірні процеси після 1000 запитів. Аналог pm.max_requests у PHP-FPM — захист від витоків пам'яті в mod_php.

Кейс: конфлікт .htaccess та AllowOverride

Переїзд сайту: ЧПУ працювало на старому хостингу, на новому сервері всі URL крім головної давали 404. mod_rewrite увімкнений, .htaccess на місці. Причина: AllowOverride None у дефолтному конфізі Apache 2.4 Ubuntu. Один рядок AllowOverride All у VirtualHost вирішив проблему. Правило: після переїзду завжди перевіряти AllowOverride у конфізі Apache.

Термін налаштування Apache під Бітрікс: 0,5–1 день.