• Post category:Настройки
  • Запись изменена:10.03.2024

Содержание

Инструкция актуальна для настроенного Корпоративного сервера 2024 на HTTPS, если портал настроен на HTTP, обновите URL на протокол HTTPS по данной инструкции.

0. Схема

Настройка Reverse proxy-Proxy для Корпоративного портала 2024

1. На ВМ с Р7-Диском

1.1. Скопируйте с установленного Р7-Диск статику (веб)

Пути до каталогов могут отличаться, просьба проверить перед выполнением ls -la /var/www/r7-office

sudo tar -cvf /root/web.tar.bz2 --use-compress-program="lbzip2 -k" /var/www/r7-office/cddisk /var/www/r7-office/mail /var/www/r7-office/admin /var/www/r7-office/calendar

Для выполнения команды потребуются установленные пакеты tar и lbzip2, пример установки

# deb дистрибутив

sudo apt install tar lbzip2

# rpm дистрибутив

sudo yum install tar lbzip2

1.2. Перенесите на машину с reverse proxy/proxy

Перенести можете удобным Вам способом

2. На ВМ с Reverse proxy/Proxy

2.1. Распакуйте архив

sudo tar xf web.tar.bz2 -C / --use-compress-prog="lbzip2"

2.2. Установите Nginx

# Для apt
sudo apt update && apt install nginx
# Для apt-get
sudo apt-get update && apt-get install nginx
# Для yum
sudo yum install nginx
# Для dnf
sudo dnf install nginx

2.3. Добавьте конфигурационные файлы для Nginx

Разместите файла по пути /etc/nginx/conf.d/

2.3.1. Для Р7-Адмика admin.conf

admin.conf

server {
        listen 80;
        listen [::]:80;
        listen 443 ssl http2;

        if ($scheme != "https")
        {
                return 301 https://$host$request_uri;
        }

        root {PATH_TO_WEB_ADMIN};
        index index.html;
        client_max_body_size 10M;

        access_log /var/log/nginx/admin-access.log;
        error_log /var/log/nginx/admin-error.log;

        server_name {DNS_NAME_ADMIN};
        server_tokens off;

        ssl_certificate     {PATH_TO_CERTIFICATE};
        ssl_certificate_key {PATH_TO_KEY};

        ssl_protocols TLSv1.2 TLSv1.3;
        ssl_ciphers HIGH:!aNULL:!MD5;

        location /api {
            proxy_pass http://{IP_SERVER_DISK}:38033/api;
        }

        location / {
                try_files $uri $uri/ /index.html;
        }
}

Где,

  • {PATH_TO_WEB_ADMIN} — путь до статики портала Р7-Админ, например, /var/www/r7-office/admin;
  • {PATH_TO_CERTIFICATE} — полный путь до ssl сертификата для защищённого соединения HTTPS, например /etc/nginx/ssl/r7.ru.crt;
  • {PATH_TO_KEY} — полный путь до ключа от сертификата, например /etc/nginx/ssl/r7.ru.key;
  • {IP_SERVER_DISK} — приватный ip адрес сервера, где установлен Р7-Диск, например, 10.10.22.15;
  • {DNS_NAME_ADMIN}dns имя для портала Р7-Админ, которое Вы прописали, например, admin.r7.ru

2.3.2. Для Р7-Календарь calendar.conf

calendar.conf

server {
        listen 80;
        listen 443 ssl http2;

        if ($scheme != "https")
        {
               return 301 https://$host$request_uri;
        }

        root {PATH_TO_WEB_CALENDAR};
        index index.html;

        access_log /var/log/nginx/calendar-access.log;
        error_log /var/log/nginx/calendar-error.log;

        server_name {DNS_NAME_CALENDAR};
        server_tokens off;

        ssl_certificate     {PATH_TO_CERTIFICATE};
        ssl_certificate_key {PATH_TO_KEY};

        ssl_protocols TLSv1.2 TLSv1.3;
        ssl_ciphers HIGH:!aNULL:!MD5;

        location /api {
            proxy_pass http://{IP_SERVER_DISK}:38033/api;
        }

        location / {
                try_files $uri $uri/ /index.html;
        }
}

Где,

  • {PATH_TO_WEB_CALENDAR} — путь до статики портала Р7-Календарь, например, /var/www/r7-office/calendar;
  • {PATH_TO_CERTIFICATE} — полный путь до ssl сертификата для защищённого соединения HTTPS, например /etc/nginx/ssl/r7.ru.crt;
  • {PATH_TO_KEY} — полный путь до ключа от сертификата, например /etc/nginx/ssl/r7.ru.key;
  • {IP_SERVER_DISK} — приватный ip адрес сервера, где установлен Р7-Диск, например, 10.10.22.15;
  • {DNS_NAME_CALENDAR}dns имя для портала Р7-Календарь, которое Вы прописали, например, calendar.r7.ru

2.3.3. Для Р7-Почта mail.conf

main.conf

server {
        listen 80;
        listen [::]:80;
        listen 443 ssl http2;

        if ($scheme != "https")
        {
                return 301 https://$host$request_uri;
        }

        root {PATH_TO_WEB_MAIL};
        index index.html;
        client_max_body_size 5120M;

        access_log /var/log/nginx/mail-access.log;
        error_log /var/log/nginx/mail-error.log;

        server_name {DNS_NAME_MAIL};
        server_tokens off;

        ssl_certificate     {PATH_TO_CERTIFICATE};
        ssl_certificate_key {PATH_TO_KEY};

        ssl_protocols TLSv1.2 TLSv1.3;
        ssl_ciphers HIGH:!aNULL:!MD5;

        location /api {
            proxy_pass http://{IP_SERVER_DISK}:38033/api;
        }

        location / {
                try_files $uri $uri/ /index.html;
        }
}

Где,

  • {PATH_TO_WEB_MAIL} — путь до статики портала Р7-Почта, например, /var/www/r7-office/mail;
  • {PATH_TO_CERTIFICATE} — полный путь до ssl сертификата для защищённого соединения HTTPS, например /etc/nginx/ssl/r7.ru.crt;
  • {PATH_TO_KEY} — полный путь до ключа от сертификата, например /etc/nginx/ssl/r7.ru.key;
  • {IP_SERVER_DISK} — приватный ip адрес сервера, где установлен Р7-Диск, например, 10.10.22.15;
  • {DNS_NAME_MAIL}dns имя для портала Р7-Почта, которое Вы прописали, например, mail.r7.ru

2.3.4. Для Р7-Диск disk.conf

disk.conf

server {
        listen 80;
        listen [::]:80;
        listen 443 ssl http2;

        if ($scheme != "https")
        {
                return 301 https://$host$request_uri;
        }

        root {PATH_TO_WEB_DISK};
        index index.html;
        client_max_body_size 10240M;

        access_log /var/log/nginx/disk-access.log;
        error_log /var/log/nginx/disk-error.log;

        server_name {DNS_NAME_DISK};
        server_tokens off;

        ssl_certificate     {PATH_TO_CERTIFICATE};
        ssl_certificate_key {PATH_TO_KEY};

        ssl_protocols TLSv1.2 TLSv1.3;
        ssl_ciphers HIGH:!aNULL:!MD5;

        location /api {
            proxy_pass http://{IP_SERVER_DISK}:38033/api;
        }

        location / {
                try_files $uri $uri/ /index.html;
        }
}

Где,

  • {PATH_TO_WEB_DISK} — путь до статики портала Р7-Админ, например, /var/www/r7-office/disk;
  • {PATH_TO_CERTIFICATE} — полный путь до ssl сертификата для защищённого соединения HTTPS, например /etc/nginx/ssl/r7.ru.crt;
  • {PATH_TO_KEY} — полный путь до ключа от сертификата, например /etc/nginx/ssl/r7.ru.key;
  • {IP_SERVER_DISK} — приватный ip адрес сервера, где установлен Р7-Диск, например, 10.10.22.15;
  • {DNS_NAME_DISK}dns имя для портала Р7-Диск, которое Вы прописали, например, disk.r7.ru

2.3.5. Для Р7-Графика draw.conf (при наличии установленного дистрибутива)

draw.conf

server {
        listen 80;
        listen [::]:80;
        listen 443 ssl http2;
        charset utf-8;

        if ($scheme != "https")
        {
                return 301 https://$host$request_uri;
        }

        server_name {DNS_NAME_DRAW};
        server_tokens off;

        access_log /var/log/nginx/draw-access.log;
        error_log /var/log/nginx/draw-error.log;

        ssl_certificate     {PATH_TO_CERTIFICATE};
        ssl_certificate_key {PATH_TO_KEY};

        ssl_protocols TLSv1.2 TLSv1.3;
        ssl_ciphers HIGH:!aNULL:!MD5;

        location / {
            proxy_pass http://{IP_SERVER_DISK}:3005;
            proxy_redirect default;
            proxy_http_version 1.1;
        }
}

Где,

  • {DNS_NAME_DRAW}dns имя для сервиса Р7-Графика, которое Вы прописали, например, draw.r7.ru
  • {PATH_TO_CERTIFICATE} — полный путь до ssl сертификата для защищённого соединения HTTPS, например /etc/nginx/ssl/r7.ru.crt
  • {PATH_TO_KEY} — полный путь до ключа от сертификата, например /etc/nginx/ssl/r7.ru.key
  • {IP_SERVER_DISK} — приватный ip адрес сервера, где установлен Р7-Диск, например, 10.10.22.15

2.4. Проверьте конфигурационные файлы

2.4.1. Проверьте корректность

Выполните

sudo nginx -t

Если вывод без ошибок, то идём дальше

Настройка Reverse proxy -Proxy для Корпоративного портала 2024

2.4.2. Перезапустите Nginx

sudo systemctl restart nginx

3. Проверьте работу

Перейдите по url порталов и проверьте, что всё работает.

https://{DNS_NAME_DRAW}, например, https://draw.r7.ru
https://{PATH_TO_WEB_DISK}, например, https://disk.r7.ru
https://{PATH_TO_WEB_MAIL}, например, https://mail.r7.ru
https://{PATH_TO_WEB_CALENDAR}, например, https://calendar.r7.ru
https://{PATH_TO_WEB_ADMIN}, например, https://admin.r7.ru

На ВМ с Р7-Диск должны быть открыты порты:

  • 38033 — для доступа к api с reverse proxy;
  • 3005 — для доступа к Р7-Графика с reverse proxy.

3.1. Если на Сервере с Р7-Диск (Корпоративный сервер 2024) Сервер документов (DS) вынесен на другой Сервер

Так как Reverse Proxy обращается к бэкенду Корпоративного портала 2024 напрямую и Сервер документов установлен на другом сервере, то необходимости в сервисе Nginx на сервере с бэкендом отпадает.

3.1.1. Остановите nginx на ВМ с Р7-Диск

sudo systemctl stop nginx
sudo systemctl disable nginx

3.2. Для Сервера документов (DS)

3.2.1. На Сервере с Reverse proxy/proxy

Добавьте конфигурационный файл ds.conf по пути /etc/nginx/conf.d/

map $http_host $this_host {
        "" $host;
        default $http_host;
}

map $http_x_forwarded_proto $the_scheme {
        default $http_x_forwarded_proto;
        "" $scheme;
}

map $http_x_forwarded_host $the_host {
        default $http_x_forwarded_host;
        "" $this_host;
}

map $http_upgrade $proxy_connection {
        default upgrade;
        "" close;
}

server {
        listen 80;
        server_name {DNS_NAME_DS};
        server_tokens off;

        ## Redirects all traffic to the HTTPS host
        return 301 https://$server_name$request_uri;
}

server {
        listen 443 ssl http2;
        server_name {DNS_NAME_DS};
        server_tokens off;

        access_log /var/log/nginx/ds-access.log;
        error_log /var/log/nginx/ds-error.log;

        ssl_certificate {PATH_TO_CERTIFICATE};
        ssl_certificate_key {PATH_TO_KEY};

        ssl_verify_client off;
        ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH";
        ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
        ssl_session_cache builtin:1000 shared:SSL:10m;
        ssl_prefer_server_ciphers on;

        add_header X-Content-Type-Options nosniff;

        location / {
                proxy_pass {HTTP_or_HTTPS}://{IP_SERVER_DS};
                proxy_http_version 1.1;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection $proxy_connection;
                proxy_set_header X-Forwarded-Host $the_host;
                proxy_set_header X-Forwarded-Proto $the_scheme;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
}

Где,

  • {IP_SERVER_DS} — приватный ip адрес сервера с Сервером документов
  • {HTTP_or_HTTPS} — протокол, на который настроен Сервер документов, http или https;
  • {DNS_NAME_DS}dns имя для Сервера документов, которое Вы прописали, например, ds.r7.ru (по нему, через Реверс прокси, будут подключаться пользователи к Серверу документов);
  • {PATH_TO_CERTIFICATE} — полный путь до ssl сертификата для защищённого соединения HTTPS, например /etc/nginx/ssl/r7.ru.crt;
  • {PATH_TO_KEY} — полный путь до ключа от сертификата, например /etc/nginx/ssl/r7.ru.key.

3.2.2. Перезапустить nginx

3.2.2.1. Проверяем корректность

Выполните

sudo nginx -t

Если вывод без ошибок, то идём дальше

Настройка Reverse proxy -Proxy для Корпоративного портала 2024

3.2.2.2. Перезапускаем
sudo systemctl restart nginx

3.3. Если Сервер документов был на https

3.3.1. Можете перевести его на http

  • На сервере с DS
3.3.1.1. Измените конфигурационный файл на сервере с Сервером документов

По пути /etc/r7-office/documentserver/nginx/ замените файл ds.conf на следующий

ds.conf

include /etc/nginx/includes/http-common.conf;
server {
  listen 0.0.0.0:80;
  listen [::]:80 default_server;
  server_tokens off;

  set $secure_link_secret SmJYZeJcHlQNj8jiQIheGz9rA;
  include /etc/nginx/includes/ds-*.conf;
}
3.3.1.2. Выполните скрипт обновления секрета в конфиге nginx и ds

sudo bash /usr/bin/documentserver-update-securelink.sh

3.3.1.3. Проверка настройки на reverse proxy/proxy
  • На сервере с Reverse Proxy

Если в п. 3.2.1 вместо {HTTP_or_HTTPS} указали https, измените на http и перезапустите nginx на reverse proxy/proxy, как это делали в п. 3.2.2

4. Проверьте работу портала и открытие документов

Портал Р7-Диска и открытия документов в нём

https://{PATH_TO_WEB_DISK}, например, https://disk.r7.ru

Открытие страница Сервера документов

https://{DNS_NAME_DS}, например, https://ds.r7.ru