Дата последнего изменения: 14.03.2023
Предположим, что в качестве внешнего прокси выступает nginx сервер.
При желании можно данные настройки адаптировать и для других прокси-сервисов.
Вне зависимости от того, как организована у вас работа балансера – единственная точка входа или он обслуживает только запросы клиентов из внешних сетей, а BitrixVM запросы внутренней сети – на него нужно перенести настройки Push-server.
Переносим настройки проксирования запросов push на балансер – можно взять конфигурационный файл виртуальной машины bx/conf/im_subscrider.conf за основу (можно прям его скопировать на балансер):
location ~* ^/bitrix/subws/ { access_log off; proxy_pass http://nodejs_sub; # http://blog.martinfjordvald.com/2013/02/websockets-in-nginx/ # 12h+0.5 proxy_max_temp_file_size 0; proxy_read_timeout 43800; proxy_http_version 1.1; proxy_set_header Upgrade $replace_upgrade; proxy_set_header Connection $connection_upgrade; } location ~* ^/bitrix/sub/ { access_log off; rewrite ^/bitrix/sub/(.*)$ /bitrix/subws/$1 break; proxy_pass http://nodejs_sub; proxy_max_temp_file_size 0; proxy_read_timeout 43800; } location ~* ^/bitrix/rest/ { access_log off; proxy_pass http://nodejs_pub; proxy_max_temp_file_size 0; proxy_read_timeout 43800; }
Данный файл подключаем к серверу, на котором настроено проксирование запросов на виртуальную машину.
Верхний конфигурационный файл зависит от bx/settings/rtc-im_settings.conf, в котором определяются следующие параметры:
Upgrade
и Connection
через переменные:
# if connection ti not set map $http_upgrade $connection_upgrade { default upgrade; '' 'close'; } map $http_upgrade $replace_upgrade { default $http_upgrade; '' "websocket"; }
upstream nodejs_sub { ip_hash; keepalive 1024; server push:8010; server push:8011; server push:8012; server push:8013; server push:8014; server push:8015; } upstream nodejs_pub { ip_hash; keepalive 1024; server push:9010; server push:9011; }
Данный файл bx/settings/rtc-im_settings.conf тоже можно скопировать и подключить на уровне http
-секции на балансере.
Далее на push-server необходимо открыть порты 8010-8015 и 9010-9011 для доступа с балансера.
iptables:
iptables -I INPUT -p tcp --match multiport --dport 8010:8015 -j ACCEPT iptables -I INPUT -p tcp --match multiport --dport 9010:9011 -j ACCEPT iptables-save > /etc/sysconfig/iptables
firewalld:
firewall-cmd --permanent --add-port=8010-8015/tcp firewall-cmd --permanent --add-port=9010-9011/tcp firewall-cmd --reload
Предположим, мы проксируем http и https сайта test.example.org на 80 порт виртуальной машины BitrixVM.
Включим модуль real_ip в BitrixVM – создаем конфигурационный файл bx/settings/real_ip.conf:
set_real_ip_from BALANCER_IP; real_ip_header X-Forwarded-For;
В качестве real_ip_header
нужно указать заголовок балансера, который он передает на бэкенд (виртуальную машину BitrixVM). В set_real_ip_from
– IP-адрес балансера.
Перезапускаем nginx.
CentOS 6:
service nginx restart
CentOS 7:
systemctl restart nginx.service
Далее настраиваем передачу протокола, по которому клиент работает с сервером.
Нам нужно, чтобы балансер передавал на бэкенд-сервер информацию о протоколе:
proxy_set_header X-Forwarded-Proto $scheme;
На бэкенде (виртуальная машина BitrixVM) делаем конфигурацию для настройки переменных в файле bx/settings/schema.conf:
map $http_x_forwarded_proto $balancer_port { default 80; "https" 443; } map $http_x_forwarded_proto $balancer_https { default "NO"; "https" "YES"; }
Тогда на бэкенде переменная $http_x_forwarded_proto
будет содержать значение http
или https
в зависимости от протокола подключения.
Далее нам потребуется конфигурационный файл сайта:
сайт по умолчанию – /etc/nginx/bx/site_enabled/s1.confВ конфигурационном файле сайта нас интересует часть:
proxy_set_header Host $host:80;
Меняем указанную выше часть на:
proxy_set_header Host $host:$balancer_port; proxy_set_header HTTPS $balancer_https;
Перезапускаем nginx:
CentOS 6:
service nginx restart
CentOS 7:
systemctl restart nginx.service
Все готово.
Для настройки проксирования телефонии можно использовать правило:
location ~* ^/(pub/imconnector/|pub/imbot.php|services/telephony/info_receiver.php|bitrix/tools/voximplant/) { proxy_ignore_client_abort on; proxy_pass $proxyserver; }
О других настройках локальной сети при использовании телефонии рассказывается в соответствующем уроке курса Администратор сервиса Битрикс24.