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







