Поделюсь своей. Возможно не совсем правильной, но вполне рабочей схемой.
Способ весьма не обычный, т.к. придется часть портов пробросить именно на виртуалку с битриксом (основной шлюз)
Заранее оговорюсь. Я использовал чистый образ CentOS 7, накатанный на виртуальную машину Hyper-V с UEFI режимом загрузки. И установкой битрикса их скриптом bitrix-env-crm.sh.
Обычный образ BitrixVM для Hyper-V собран на старом поколении VM, что нам не очень подходит.
Хостнейм машины был задан такой же, с какого домена в дальнейшем будет происходить подключение. Пример bla.bla.ru
Имеем IIS сервер с просмотром наружу по 443 и 80 порту + WACS для автовыдачи сертификатов lets.encr.
Что нам необходимо для работы битрикса:
1.
Необходимо на вашем шлюзе (маршрутизаторе) прокинуть порты на VM с битриксом
А именно:
5222 tcp
8070tcp
5223tcp
8890-8895tcp
Далее если планируете использовать битрикс в локальной сети прокинуть локальный DNS с доменом битрикса на ваш сервер IIS
2.
Переходим к настройке IIS
У нас используется последняя версия IIS 10
Как настраивать Reverse Proxy на iis писать не буду, материала много. Опишу конкретно ситуацию с битриксом.
Для начала меняем\создаем ветку реестра
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\w3svc\P
arameters\
Добавляем ключ FastCGIUtf8ServerVariables
(тип параметра REG_MULTI_SZ, каждое значение с новой строки)
Параметры:
PATH_INFO, ORIG_PATH_INFO, PATH_TRANSLATED
Это поможет нам избежать проблемы с ссылками (Хотя в теории ее не должно быть)
Заходим в IIS
Application Request Routing Cahe - Server Proxy Settings
Прописываем в поле Custom Headers - Preserve client IP заголовок вида X-Forwarded-For
Ставим галочку Include TCP port from client IP
Далее настраиваем сам сайт (а именно проксирование)
Дабы долго не распинаться выкладываю весь конфиг
Код |
---|
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="https" enabled="true" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTPS}" pattern="^OFF$" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}/{R:1}" />
</rule>
<rule name="ReverseProxyInboundRule1" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{CACHE_URL}" pattern="^(https?)://" />
</conditions>
<action type="Rewrite" url="http://bla.bla.ru/{R:1}" />
</rule>
</rules>
</rewrite>
<defaultDocument>
<files>
<clear />
<add value="index.php" />
</files>
</defaultDocument>
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="https://bla.bla.ru:8895" />
</customHeaders>
</httpProtocol>
</system.webServer>
</configuration>
|
Пара пояснений. Первое Правило редиректит любого желающего с 80 на 443 порт.
Второе собсвенно сам ревер прокси и тут очень
важный момент!
ReverseProxy должен смотреть на
http битрикса по
ХОСТНЕЙМУНо ведь наш DNS говорит нам что это сервер IIS, верно! По этому идем в C:/Windows/System32/drivers/etc
и прописываем в host своем правило
bla.bla.ru IpBitrixvm
На этом с иссом вроде все.
3. Переходим к самому Bitrix24
Для начала надо закрыть 443 который листится по умолчанию.
Заходим /etc/nginx/bx/site_enabled и либо удаляем от туда ssl.s1.conf
Либо заходим в него и коментируем знаком # все строчки.
Заходим в s1.conf и секцию между listten 80 default_server; и set $proxyserver;
Заменяем слудующим:
Код |
---|
server_name _;
server_name_in_redirect off;
access_log /var/log/nginx/access.log main;
error_log /var/log/nginx/error.log warn;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarder-For $proxy_add_x_forwarder_for;
proxy_set_header Host $host:443;
proxy_set_header Connection "upgrade";
proxy_set_header Upgrade $http_upgrade;
set_real_ip_from (тут адрес IISа);
real_ip_header X-Forwarded-For;
|
Дале заходим в админку битрикса (домен.ру/bitrix) Настройки Настройки продукта Настройки Модулей Push and Pull
И все записи вида //DOMEN// заменяем на bla.bla.ru:8895
На этом вроде бы все. Сейчас тестируем данную связку, пока вроде бы все работает. Чат, лента все работает. IPшники отображаются самого клиента.