Настройка обратного прокси для 1С-Элемент

01.08.25

Разработка - 1С:Элемент

Инструкция, как настроить обратный прокси-сервер на сервере 1С:Элемент с onpremis установкой. Подробно и пошагово описана вся процедура, как получить работающий обратный прокси Nginx на Ubuntu 24.10.

Бесплатные

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Бесплатно
Пример конфигурационных файлов для настройки обратного прокси-сервера Nginx
.zip 1,63Kb
0 Скачать бесплатно

Возможно, опыт кому-то будет полезен, а может, кто-то в комментариях подскажет слабое место, или что я упустил. Все реальные адреса в тексте заменены на произвольные. В конце сообщения по ссылке приложены конфиги Nginx, которые можно взять за шаблон.

 При настройке Nginx я опирался на 3 инструкции:

Итак, какие исходные данные?

  • Имеем в локальной сети сервер на Ubuntu 24.10 с работающим сервером 1С-Элемент и установленным и подключенным Gitlab.
  • Локальный адрес сервера 192.168.0.100
  • Сервер элемент работает на портах 9090 и 9091, по умолчанию.
  • Есть белый IP, локальная сеть находится за роутером, который отсекает лишние порты.
  • Белый IP: 40.41.42.42
  • Есть домен 3 уровня 1c-element.somesite.ru на котором мы хотим показать клиенту результаты разработки, либо развернуть продуктовое приложение.
  • Есть веб-публикация 1С на локальном адресе 192.168.0.200, которая сейчас проброшена на внешний 80ый порт и работает на домене demo1c.somesite.ru/Baza1C
  • Нужно предоставить доступ к демо-приложению на 1С-Элемент, с локальным адресом: 192.168.0.100:9090/applications/demo-app

 

Шаг 1: Установка Nginx

Я приведу путь, которым прошёл сам) а подробности по ссылке, поскольку впихнуть в пост телеграмма всё подробно не получится.

apt update
apt install nginx
systemctl start nginx
systemctl status nginx

 

ВАЖНЫЙ МОМЕНТ! Если установили Gitlab, то обратный Nginx у вас уже работает и порты 80 и 443 заняты. Я настраивать этот же Nginx как обратный прокси-сервер не захотел, так как вероятен переезд Nginx на другой сервер, так же не захотел переносить Gitlab на другие порты, поэтому сразу после установки Nginx, исправляем конфигурацию на порты 88 и 1443.

Создадим каталоги для хранения настроек по сайтам:

mkdir /etc/nginx/sites-available
mkdir  /etc/nginx/sites-enabled

Откроем файл /etc/nginx/nginx.conf и после строки

include /etc/nginx/conf.d/*.conf;

Добавим:

include /etc/nginx/sites-enabled/*;

Таким образом мы выполнили установку и базовую подготовку Nginx, далее нужно подготовить правильные конфигурационные файлы.

Но сперва…

 

Шаг 2: Привязка домена, проброс портов

В панели управления хостинг провайдера у поддомена 3 уровня (1c-element.somesite.ru) удаляем A-записи, и добавляем новую A 40.41.42.42 - таким образом говорим системе DNS куда отправлять запросы для этого домена.

Просим системного администратора настроить проброс портов с белого IP-адреса на наш внутренний прокси:

40.41.42.42:80 -> 192.168.0.100:88

40.41.42.42:443 -> 192.168.0.100:1443

Возможно, что на роутере порты 80 и 443 уже куда-то проброшены, в таком случае надо будет настроить эти ресурсы через обратный прокси, а настройку согласовать с потребителем, который занимает порт, что какое-то время порты будут недоступны. В нашем случае на 80 порту работала веб-публикация демо-базы 1С, которую мы показывали клиентам. Перенастроили её через обратный прокси с SSL-сертификатом.

В случае успешной проброски портов, по адресу 40.41.42.42:80 должна отображаться приветственная страница Nginx, такая же как по адресу 192.168.0.100:88.

 

Шаг 3: Конфигурирование Nginx для HTTP протокола

Первым делом надо восстановить работоспособность публикации базы 1С, которая работала по адресу demo1c.somesite.ru/Baza1C.

Для этого в каталоге: "/etc/nginx/sites-available/" создаём файл "demo1c.somesite.ru.conf":

nano /etc/nginx/sites-available/demo1c.somesite.ru.conf

 И записываем вот такой конфиг:

server {

  listen 88;

  server_name demo1c.somesite.ru;


  location /Baza1C {

     proxy_pass http://192.168.0.200/Baza1C/;

     proxy_redirect off;

     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 http;

 }

  location / {

     return 404;

}

}

Создаем символическую ссылку на конфиг:

ln -s /etc/nginx/sites-available/demo1c.somesite.ru.conf /etc/nginx/sites-enabled

 Проверяем конфиги на наличие ошибок и перезапускаем Nginx:

nginx -t
nginx -s reload

Теперь по адресу demo1c.somesite.ru/Baza1C должна возобновить работу веб-публикация базы 1С.

 

Шаг 4: Установка и настройка Let's Encrypt

Переведём работу публикации 1С на протокол https. Я следовал именно таким путём, потому что веб-публикацию 1С оказалось проще настроить и запустить чем сервер 1С-Элемент. Поэтому эту задачу я рассматриваю как удобный способ потренироваться.

Установим Certbot:

apt install certbot

Создадим директорию для работы Letsencrypt, которую будем использовать в конфигах Nginx:

mkdir /var/www/letsencrypt
chown -R nginx:nginx /var/www/letsencrypt

Создадим файл параметров Диффи-Хелмана:

openssl dhparam -out /etc/ssl/private/dhparam.pem 2048

Теперь мы готовы запросить сертификаты для доменов.

 

Шаг 5: Конфигурирование Nginx для HTTPS протокола

Сохраним где-нибудь файл "/etc/nginx/sites-available/demo1c.somesite.ru.conf" на всякий случай, а потом заменим его содержимое вот на такое:

server {

  listen 88;

  server_name demo1c.somesite.ru;


  location ^~ /.well-known/acme-challenge/ {

     default_type "text/plain";

     root /var/www/letsencrypt;

  }


  location = /.well-known/acme-challenge/ {

     return 404;

  }

}

Такая конфигурация понадобится для получения SSL-сертификата.

Проверяем конфиги на наличие ошибок и перезапускаем Nginx:

nginx -t
nginx -s reload

Запустим Certbot и получим сертификат для домена:

certbot certonly --webroot -w /var/www/letsencrypt -d demo1c.somesite.ru

Затем откроем файл с настройками домена "/etc/letsencrypt/renewal/demo1c.somesite.ru.conf" и внесем в секцию [renewalparams] следующую опцию:

[renewalparams]

...

renew_hook = nginx -s reload

Теперь обновим файл "/etc/nginx/sites-available/demo1c.somesite.ru.conf" добавим туда ещё одну секцию "server":

server {

  listen 1443 ssl http2;

  server_name demo1c.somesite.ru;
 

  ssl_certificate /etc/letsencrypt/live/demo1c.somesite.ru/fullchain.pem;

  ssl_certificate_key /etc/letsencrypt/live/demo1c.somesite.ru/privkey.pem;

  ssl_session_timeout 1d;

  ssl_session_cache shared:SSL:50m;

  ssl_session_tickets off;

  ssl_dhparam /etc/ssl/private/dhparam.pem;

 
  ssl_protocols TLSv1.2 TLSv1.3;

  ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;

  ssl_prefer_server_ciphers off;


  add_header Strict-Transport-Security "max-age=63072000" always;


  ssl_stapling on;

  ssl_stapling_verify on;

  ssl_trusted_certificate /etc/letsencrypt/live/demo1c.somesite.ru/chain.pem;

  resolver 8.8.8.8;


location /Baza1C {

     proxy_pass http://192.168.0.200/Baza1C/;

     proxy_redirect off;

     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 https;

 }

  location / {

     return 404;

}

}

Проверяем конфиги на наличие ошибок и перезапускаем Nginx:

nginx -t
nginx -s reload

Теперь адрес "demo1c.somesite.ru/Baza1C" готов работать по https протоколу, необходимо лишь добавить 301 редирект в секцию server для порта 88, допишем в конец секции вот такую строку: " return 301 https://$host$request_uri;" которая перенаправит любой запрос кроме запроса от Let`s Encrypt на аналогичный https адрес.

Итоговый конфиг приложу ссылкой к посту отдельным файлом.

 

Шаг 6: Особенности 1С-Элемент

Аналогично настраиваем конфиги для 1С-Элемента, но есть некоторые особенности.

Выделяем отдельное приложение и обеспечиваем авторизацию

В секцию server, которая отвечает за 1443 порт (за SSL соединение) надо добавить вот такие инструкции:

location /auth {

        proxy_pass http://192.168.0.100:9090/auth/;

        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        proxy_set_header X-Forwarded-Host $host;

        proxy_set_header X-Forwarded-Proto https;

        proxy_set_header X-Real-IP $remote_addr;
 
        proxy_http_version 1.1;

    }


  location / {

        proxy_pass http://192.168.0.100:9090/;

        proxy_set_header X-Forwarded-Endpoint /applications/demo-app;

        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        proxy_set_header X-Forwarded-Host $host;

        proxy_set_header X-Forwarded-Proto https;

        proxy_set_header X-Real-IP $remote_addr;

        proxy_http_version 1.1;

    } 

Обработку пути "/auth" для обеспечения обработки авторизации, и при помощи директивы "X-Forwarded-Endpoint" ограничить доступ к конкретному приложению на 1С-Элемент.

Остальные блоки и разделы готовятся аналогично примеру с веб-публикацией 1С.

Примеры конфигурационных файлов прикрепил к статье.

Вступайте в нашу телеграмм-группу Инфостарт

1с-элемент nginx настройка онпрем onpremis

См. также

1С:Элемент Программист 1С:Элемент Бесплатно (free)

Статья посвящена практическому опыту разработки внутренних приложений на платформе 1С:Предприятие.Элемент. Автор делится подходами к организации архитектуры, повторному использованию компонентов, настройке пользовательского интерфейса и взаимодействию с мобильными устройствами. Особое внимание уделено ограничениям, с которыми столкнулась команда, а также найденным техническим решениям. Материал будет полезен специалистам, которые начинают работу с платформой, а также тем, кто рассматривает ее в качестве инструмента для создания корпоративных приложений.

23.07.2025    4721    anvolkov1cbit    47    

17

1С:Элемент Программист 1С v8.3 1С:Управление торговлей 11 Россия Абонемент ($m)

1С: Элемент добрался до релиза, и появляются первые ласточки интеграций. Если использовать Элемент по прямому назначению (Кабинеты клиентов, Порталы и прочие сканеры штрихкодов), а не строить звездолет, который будет бороздить просторы Большого театра, то одно из первых, что понадобится - это обмен со Старшим братом. И если пробовать работать с Планом обмена в Элементе "как привыкли", то это может вызвать оторопь и микроинсульт. Ниже написанное актуально для 7.0 версии Элемента, надеюсь, сейчас, когда вы читаете эти строки, План обмена добавляет сам себя в среду разработки, слушая ваши пожелания, ну а для тех, кто до сих пор на 7.0 - ниже написанное.

1 стартмани

17.06.2025    725    1    kembrik    0    

7

Нейросети 1С:Элемент Программист Бесплатно (free)

Технология 1С:Элемент позволяет быстро и качественно разрабатывать компактные и практичные мини-решения, не зацикливаясь на технических деталях, думая не о коде, а о бизнес-идее. Расскажем о том, какие приложения лучше всего разрабатывать на 1С:Элемент, кому это легче делать и какие трудности могут быть в освоении.

09.04.2025    5820    Dziden    69    

2

Работа с интерфейсом 1С:Элемент Программист Стажер 1С v8.3 Россия Бесплатно (free)

Как быстро реализовать на 1С:Элемент любой нестандартный интерфейс, используя инструмент HTMX и серверный рендеринг.

29.01.2025    3129    deplatoon    16    

10

Мессенджеры и боты 1С:Элемент Программист 1С v8.3 Россия Бесплатно (free)

"Помнить все" на 1С Элемент + Телеграм Вы можете напомнить себе о задаче, введя (или надиктовав) подобные фразы:   позвонить через 15 минут, напомнить завтра утром, погулять в 8 вечера в воскресенье, и даже: вынести мусор в последний понедельник следующего месяца без четверти пять.

27.01.2025    1933    K_A_O    3    

14

1С:Элемент Мессенджеры и боты Программист 1С v8.3 Россия Бесплатно (free)

Если захотеть, то можно вспомнить про различные продукты, которые облегчают жизнь. Но надо очень сильно захотеть, чтобы начать их изучать. В статье автор вспомнил про 1С:Предприятие.Элемент и, наконец, придумал, для чего его использовать.

10.06.2024    10328    SmithSE    10    

49

Механизмы платформы 1С 1С:Элемент Бесплатно (free)

Платформа 1С:Предприятие 8 развивалась с начала двухтысячных, постепенно расширяя свое влияние на мобильный мир, веб-технологии и облачные сервисы. Расскажем об эволюции платформы и приложений экосистемы 1С:Предприятие.

17.01.2024    8712    peterg    11    

53
Оставьте свое сообщение