====== Настройка Bitrix Virtual Appliance для работы с внешним обратным прокси ======
Данная инструкция основана на практическом опыте настройки Bitrix Virtual Appliance версии 9.0.6 для работы с внешним nginx proxy manager. Описаны все частые ошибки и способы их решения.
===== Архитектура и особенности =====
Bitrix Virtual Appliance использует следующую архитектуру:
Внешний nginx (proxy manager) → nginx (Bitrix VA:80/443) → httpd (Apache:8888)
**Ключевая проблема:** По умолчанию внутренний nginx VA передает порты в заголовке Host, что приводит к появлению портов в URL внутренних ссылок Битрикс (например: ''https://domain.com:80/crm/'').
===== Предварительная диагностика =====
Проверьте текущую конфигурацию системы:
# Проверка запущенных веб-серверов
ps aux | grep -E "(httpd|nginx|apache)"
# Проверка структуры конфигураций
httpd -S
find /etc/nginx/bx -name "*.conf" | head -10
# Проверка модулей Apache
httpd -M | grep remoteip
===== 1. Настройка Apache (httpd) =====
==== 1.1 Редактирование основной конфигурации ====
В Bitrix VA часто отсутствует nano, используйте vi для редактирования файлов.
Откройте конфигурацию Apache:
vi /etc/httpd/bx/conf/default.conf
Найдите секцию '''' и добавьте после ''DocumentRoot'' следующие настройки:
# Настройки для работы с внешним обратным прокси
RemoteIPHeader X-Forwarded-For
RemoteIPTrustedProxy 127.0.0.1
RemoteIPTrustedProxy 192.168.0.0/24
# Обработка HTTPS от внешнего прокси
SetEnvIf X-Forwarded-Proto "https" HTTPS=on
SetEnvIf X-Forwarded-Proto "https" SERVER_PORT=443
SetEnvIf X-Forwarded-Proto "http" SERVER_PORT=80
SetEnvIf X-Forwarded-Host "(.+)" HTTP_HOST=$1
==== 1.2 Проверка модуля RemoteIP ====
# Проверка загрузки модуля (игнорируйте предупреждение о FQDN)
httpd -M | grep remoteip
# Если модуль не загружен, добавьте в основную конфигурацию
echo "LoadModule remoteip_module modules/mod_remoteip.so" >> /etc/httpd/conf/httpd.conf
===== 2. Критическое исправление nginx конфигураций =====
Это самый важный шаг! Без этого исправления порты будут продолжать появляться в URL.
==== 2.1 Поиск и исправление проблемных настроек ====
Проверьте текущие настройки:
grep -n "proxy_set_header Host" /etc/nginx/bx/site_avaliable/s1.conf
grep -n "proxy_set_header Host" /etc/nginx/bx/site_avaliable/ssl.s1.conf
Если вы видите строки вида ''proxy_set_header Host $host:80;'' или ''proxy_set_header Host $host:443;'', исправьте их:
# Автоматическое исправление HTTP конфигурации
sed -i 's/proxy_set_header Host \$host:80;/proxy_set_header Host $host;/' /etc/nginx/bx/site_avaliable/s1.conf
# Автоматическое исправление HTTPS конфигурации
sed -i 's/proxy_set_header Host \$host:443;/proxy_set_header Host $host;/' /etc/nginx/bx/site_avaliable/ssl.s1.conf
==== 2.2 Добавление правильных заголовков прокси ====
Убедитесь, что в обеих конфигурациях есть правильные заголовки:
**Для s1.conf (HTTP):**
vi /etc/nginx/bx/site_avaliable/s1.conf
**Для ssl.s1.conf (HTTPS):**
vi /etc/nginx/bx/site_avaliable/ssl.s1.conf
В обеих конфигурациях секция заголовков должна выглядеть так:
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header Host $host; # БЕЗ портов!
proxy_set_header HTTPS YES; # Только для SSL конфигурации
==== 2.3 Проверка исправлений ====
# Должно показать строки БЕЗ портов
grep "proxy_set_header Host" /etc/nginx/bx/site_avaliable/s1.conf
grep "proxy_set_header Host" /etc/nginx/bx/site_avaliable/ssl.s1.conf
# Проверка синтаксиса nginx
nginx -t
===== 3. Настройка PHP для работы с прокси =====
==== 3.1 Поиск файла dbconn.php ====
# Поиск файла (может быть в разных местах в зависимости от версии)
find / -name "dbconn.php" 2>/dev/null
Обычно файл находится в ''/home/bitrix/www/bitrix/php_interface/dbconn.php''.
==== 3.2 Добавление настроек прокси ====
**Способ 1 - Через команду (рекомендуется):**
# Создайте резервную копию
cp /home/bitrix/www/bitrix/php_interface/dbconn.php /home/bitrix/www/bitrix/php_interface/dbconn.php.bak
# Добавьте настройки в конец файла
cat >> /home/bitrix/www/bitrix/php_interface/dbconn.php << 'EOF'
// Настройки для работы с внешним обратным прокси
if (!empty($_SERVER['HTTP_X_FORWARDED_PROTO'])) {
if ($_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') {
$_SERVER['HTTPS'] = 'on';
$_SERVER['SERVER_PORT'] = 443;
} else {
unset($_SERVER['HTTPS']);
$_SERVER['SERVER_PORT'] = 80;
}
}
if (!empty($_SERVER['HTTP_X_FORWARDED_HOST'])) {
$_SERVER['HTTP_HOST'] = $_SERVER['HTTP_X_FORWARDED_HOST'];
}
EOF
**Способ 2 - Через vi (если нужно отредактировать вручную):**
vi /home/bitrix/www/bitrix/php_interface/dbconn.php
==== 3.3 Проверка добавленных настроек ====
tail -15 /home/bitrix/www/bitrix/php_interface/dbconn.php
===== 4. Настройка внешнего nginx proxy manager =====
==== 4.1 Основные настройки ====
**Proxy Host Settings:**
* **Domain Names:** ''your-domain.com''
* **Scheme:** ''http''
* **Forward Hostname/IP:** ''IP-адрес-Bitrix-VA'' (например: ''192.168.0.136'')
* **Forward Port:** ''80'' (НЕ 8888!)
* **Cache Assets:** ON
* **Block Common Exploits:** ON
==== 4.2 Расширенные настройки ====
**Advanced Tab:**
# Заголовки для правильной работы с Битрикс
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Port $server_port;
# Увеличенные лимиты для Битрикс
client_max_body_size 1024M;
proxy_connect_timeout 600;
proxy_send_timeout 600;
proxy_read_timeout 600;
send_timeout 600;
# Оптимизация для статических файлов Битрикс
location ~* ^.+\.(jpg|jpeg|gif|png|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar|swf)$ {
expires 30d;
add_header Cache-Control "public, immutable";
}
# Обработка административных разделов
location ~* ^/(bitrix/admin|bitrix/php_interface)/ {
proxy_buffering off;
proxy_request_buffering off;
}
===== 5. Применение изменений =====
==== 5.1 Перезапуск сервисов ====
# Перезапуск в правильном порядке
systemctl restart httpd
systemctl restart nginx
# Проверка статуса
systemctl status httpd nginx
==== 5.2 Очистка кэшей ====
# Очистка кэша Битрикс
rm -rf /home/bitrix/www/bitrix/cache/*
rm -rf /home/bitrix/www/bitrix/managed_cache/*
rm -rf /home/bitrix/www/bitrix/stack_cache/*
# Очистка кэша браузера (выполните в браузере)
# Ctrl+Shift+R или Ctrl+F5
===== 6. Настройка в административном разделе Битрикс =====
Зайдите в: **Настройки → Настройки продукта → Настройки модулей → Главный модуль**
**Важные настройки:**
* **Адрес сайта:** ''domain.com'' (БЕЗ протокола http:// или https://)
* **Использовать HTTPS:** Да (если используете SSL сертификат)
===== 7. Диагностика и проверка =====
==== 7.1 Проверка заголовков через curl ====
# Проверка прямого подключения к Bitrix VA
curl -I http://IP-Bitrix-VA
# Проверка через внешний прокси
curl -I https://your-domain.com
# Проверка редиректов внутренних разделов
curl -I http://IP-Bitrix-VA/crm/
curl -I http://IP-Bitrix-VA/tasks/
==== 7.2 Проверка в браузере ====
**Основной тест работоспособности:**
- Откройте ''https://your-domain.com''
- Кликните по внутренним ссылкам: **CRM**, **Задачи**, **Календарь**
- Кликните на **название портала** в левом верхнем углу
- **URL НЕ должны содержать портов** (например: '':80'' или '':443'')
**Правильно:** ''https://domain.com/crm/deal/''
**Неправильно:** ''https://domain.com:80/crm/deal/''
==== 7.3 Просмотр логов при проблемах ====
# Логи nginx
tail -f /var/log/nginx/error.log
# Логи Apache
tail -f /etc/httpd/logs/error_log
# Проверка в режиме реального времени
tail -f /var/log/nginx/error.log /etc/httpd/logs/error_log
===== 8. Частые ошибки и их решения =====
==== Порты все еще появляются в URL ====
**Причина:** Не исправлены настройки nginx VA
**Решение:**
# Принудительная проверка и исправление
grep "proxy_set_header Host.*:80" /etc/nginx/bx/site_avaliable/s1.conf
grep "proxy_set_header Host.*:443" /etc/nginx/bx/site_avaliable/ssl.s1.conf
# Если найдены строки с портами, исправьте их повторно
sed -i 's/proxy_set_header Host \$host:[0-9]*;/proxy_set_header Host $host;/' /etc/nginx/bx/site_avaliable/s1.conf
sed -i 's/proxy_set_header Host \$host:[0-9]*;/proxy_set_header Host $host;/' /etc/nginx/bx/site_avaliable/ssl.s1.conf
systemctl restart nginx
==== Редиректы на HTTP вместо HTTPS ====
**Причина:** Неправильно переданы заголовки прокси
**Решение:** Проверьте настройки в nginx proxy manager и убедитесь, что передается ''X-Forwarded-Proto: https''
==== Проблемы с загрузкой файлов ====
**Причина:** Недостаточные лимиты
**Решение:** Увеличьте лимиты в nginx proxy manager (''client_max_body_size'')
==== Ошибки 502/504 ====
**Причина:** Недостаточные таймауты
**Решение:** Увеличьте таймауты в Advanced настройках nginx proxy manager
===== 9. Итоговая проверка =====
После выполнения всех настроек проверьте:
* ✓ Сайт открывается через внешний домен
* ✓ Внутренние ссылки работают без портов в URL
* ✓ HTTPS корректно определяется
* ✓ Загрузка файлов функционирует
* ✓ Административный раздел доступен
* ✓ Push-уведомления работают (если используются)
**Рекомендация:** Сохраните копии измененных конфигурационных файлов перед обновлением Bitrix VA, так как обновления могут сбросить настройки.