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







