<note important> Данная инструкция основана на практическом опыте настройки Bitrix Virtual Appliance версии 9.0.6 для работы с внешним nginx proxy manager. Описаны все частые ошибки и способы их решения. </note>
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
<note tip> В Bitrix VA часто отсутствует nano, используйте vi для редактирования файлов. </note>
Откройте конфигурацию Apache:
vi /etc/httpd/bx/conf/default.conf
Найдите секцию <VirtualHost 127.0.0.1:8888> и добавьте после 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
# Проверка загрузки модуля (игнорируйте предупреждение о FQDN) httpd -M | grep remoteip # Если модуль не загружен, добавьте в основную конфигурацию echo "LoadModule remoteip_module modules/mod_remoteip.so" >> /etc/httpd/conf/httpd.conf
<note warning> Это самый важный шаг! Без этого исправления порты будут продолжать появляться в URL. </note>
Проверьте текущие настройки:
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
Убедитесь, что в обеих конфигурациях есть правильные заголовки:
Для 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 конфигурации
# Должно показать строки БЕЗ портов 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
# Поиск файла (может быть в разных местах в зависимости от версии) find / -name "dbconn.php" 2>/dev/null
Обычно файл находится в /home/bitrix/www/bitrix/php_interface/dbconn.php.
Способ 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
tail -15 /home/bitrix/www/bitrix/php_interface/dbconn.php
Proxy Host Settings:
your-domain.comhttpIP-адрес-Bitrix-VA (например: 192.168.0.136)80 (НЕ 8888!)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; }
# Перезапуск в правильном порядке systemctl restart httpd systemctl restart nginx # Проверка статуса systemctl status httpd nginx
# Очистка кэша Битрикс 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
Зайдите в: Настройки → Настройки продукта → Настройки модулей → Главный модуль
Важные настройки:
domain.com (БЕЗ протокола http: или https:)# Проверка прямого подключения к 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/
<note> Основной тест работоспособности: </note>
https://your-domain.com:80 или :443)
Правильно: https://domain.com/crm/deal/
Неправильно: https://domain.com:80/crm/deal/
# Логи 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
Причина: Не исправлены настройки 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
Причина: Неправильно переданы заголовки прокси
Решение: Проверьте настройки в nginx proxy manager и убедитесь, что передается X-Forwarded-Proto: https
Причина: Недостаточные лимиты
Решение: Увеличьте лимиты в nginx proxy manager (client_max_body_size)
Причина: Недостаточные таймауты Решение: Увеличьте таймауты в Advanced настройках nginx proxy manager
После выполнения всех настроек проверьте:
<note tip> Рекомендация: Сохраните копии измененных конфигурационных файлов перед обновлением Bitrix VA, так как обновления могут сбросить настройки. </note>