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

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

Настройка 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 день.