Настройка веб-доступа к 1С:Предприятие 8.3 через Nginx с SSL (2026): полное руководство | AdminWiki
Timeweb Cloud — сервера, Kubernetes, S3, Terraform. Лучшие цены IaaS.
Попробовать

Настройка веб-доступа к 1С:Предприятие 8.3 через Nginx с SSL (2026): полное руководство

03 мая 2026 10 мин. чтения
Содержание статьи

Организация удалённого веб-доступа к системе 1С:Предприятие требует надёжного и безопасного шлюза. Встроенный веб-сервер 1С не предназначен для работы под прямой нагрузкой из интернета, особенно в условиях требований к шифрованию трафика. Nginx в роли обратного прокси решает эти задачи: он терминалирует SSL-соединения, балансирует нагрузку, фильтрует запросы и разгружает сервер приложений. Это руководство содержит пошаговые инструкции для настройки Nginx с ws-module для работы с файловыми и клиент-серверными базами 1С, актуальные на 2026 год.

Зачем нужен Nginx перед 1С и общая схема работы

Прямая публикация веб-сервера 1С в интернет создаёт риски безопасности и проблемы с производительностью. Его возможности по настройке SSL/TLS ограничены, а обработка шифрования ложится на сервер приложений, отнимая ресурсы у бизнес-логики. Nginx выступает единым защищённым входом. Схема становится такой: пользовательский браузер устанавливает зашифрованное соединение (HTTPS) с Nginx, а тот, в свою очередь, проксирует запросы на сервер 1С по HTTP по внутренней сети. Это обязательная практика для внешнего доступа к бухгалтерским системам.

Архитектурные преимущества: безопасность, производительность, гибкость

Использование Nginx даёт три ключевых преимущества. Безопасность: централизованное управление SSL/TLS, возможность внедрения WAF-правил (например, через ModSecurity), ограничение доступа по IP-адресам и геолокации на уровне веб-сервера. Производительность: Nginx эффективно обрабатывает SSL-рукопожатия, кеширует статические файлы (картинки, CSS) и может балансировать нагрузку между несколькими серверами 1С. Гибкость: один экземпляр Nginx может обслуживать несколько публикаций 1С и других веб-сервисов, предоставляя удобные инструменты для логирования и мониторинга трафика.

Подготовка среды: установка и компиляция Nginx с ws-module

Для корректной работы с протоколом 1С, особенно для поддержки тонкого клиента через WebSocket, требуется модуль ngx_http_ws_module. Базовая установка Nginx из репозиториев ОС этого модуля не включает. Требуется компиляция из исходников. Работа инструкции проверена на Ubuntu 22.04/24.04 LTS и CentOS/RHEL 9, но шаги универсальны.

Вариант A: Сборка динамического модуля (рекомендуется для тестирования)

Этот способ позволяет подключить модуль без пересборки всего Nginx, что удобно для быстрого тестирования. Сначала установите зависимости для компиляции.

# Для Ubuntu/Debian
sudo apt update
sudo apt install build-essential libpcre3 libpcre3-dev zlib1g zlib1g-dev libssl-dev

# Для CentOS/RHEL
sudo dnf group install "Development Tools"
sudo dnf install pcre-devel zlib-devel openssl-devel

Затем загрузите исходники Nginx, совместимые с вашей установленной версией (узнать: nginx -v), и исходники модуля.

# Пример для Nginx 1.24.x
wget https://nginx.org/download/nginx-1.24.0.tar.gz
tar -xzf nginx-1.24.0.tar.gz
cd nginx-1.24.0

# Клонирование репозитория модуля
cd ..
git clone https://github.com/yaoweibin/nginx_ws_module.git
cd nginx-1.24.0

Скомпилируйте модуль. Укажите путь к конфигурации вашего текущего Nginx (nginx -V 2>&1 | grep arguments).

./configure --with-compat $(nginx -V 2>&1 | grep arguments | sed 's/.*--/--/g') \
--add-dynamic-module=../nginx_ws_module
make modules

После компиляции скопируйте полученный файл objs/ngx_http_ws_module.so в папку модулей Nginx (например, /usr/lib/nginx/modules/) и подключите его в основном конфигурационном файле nginx.conf, добавив строку в начало:

load_module modules/ngx_http_ws_module.so;

Перезапустите Nginx: sudo systemctl restart nginx. Проверьте, что модуль загружен: nginx -T 2>&1 | grep ws_module.

Вариант B: Статическая компиляция Nginx с модулем (для production)

Для production-среды рекомендуется полная статическая сборка с включением всех необходимых модулей. Это обеспечивает максимальную производительность и стабильность.

./configure \
--prefix=/etc/nginx \
--sbin-path=/usr/sbin/nginx \
--modules-path=/usr/lib/nginx/modules \
--conf-path=/etc/nginx/nginx.conf \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--pid-path=/var/run/nginx.pid \
--lock-path=/var/run/nginx.lock \
--http-client-body-temp-path=/var/cache/nginx/client_temp \
--http-proxy-temp-path=/var/cache/nginx/proxy_temp \
--http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp \
--http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp \
--http-scgi-temp-path=/var/cache/nginx/scgi_temp \
--user=nginx \
--group=nginx \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_realip_module \
--with-http_gunzip_module \
--with-http_gzip_static_module \
--with-threads \
--with-file-aio \
--with-http_slice_module \
--with-http_stub_status_module \
--add-module=../nginx_ws_module \
--with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic'

Выполните компиляцию и установку:

make -j$(nproc)
sudo make install
sudo systemctl daemon-reload
sudo systemctl start nginx

Убедитесь, что ws-module встроен: nginx -V 2>&1 | grep ws_module.

Базовая конфигурация Nginx для проксирования 1С

Основная конфигурация размещается в отдельном файле, например, /etc/nginx/conf.d/1c.conf. Сначала определите upstream-блок, указывающий на сервер 1С. По умолчанию веб-сервер 1С слушает порт 80.

upstream backend_1c {
    server 192.168.1.100:80; # IP-адрес сервера 1С
    keepalive 32; # Поддержка keepalive-соединений для производительности
}

Затем настройте блок server для приёма запросов.

Конфиг для файловой базы данных (работа через http[s]://server/1c)

Этот конфигурационный блок подходит для стандартной публикации файловой базы.

server {
    listen 80;
    server_name 1c.example.com; # Ваш домен или IP

    # Корневая директива для указания каталога публикаций 1С
    # Убедитесь, что пользователь Nginx имеет права на чтение
    root /var/www/1c_published; # Пример пути

    client_max_body_size 1024M; # Критично для загрузки больших файлов в 1С

    location / {
        proxy_pass http://backend_1c;
        proxy_http_version 1.1;

        # Стандартные заголовки для передачи информации о клиенте
        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;

        # Обязательные заголовки для работы WebSocket (тонкий клиент)
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";

        # Увеличенные таймауты для операций 1С
        proxy_connect_timeout 600s;
        proxy_send_timeout 600s;
        proxy_read_timeout 600s;
    }

    # Логирование
    access_log /var/log/nginx/1c_access.log;
    error_log /var/log/nginx/1c_error.log;
}

Конфиг для клиент-серверной базы (CS) и кластера серверов 1С

В кластерной конфигурации upstream может содержать несколько серверов. Nginx будет распределять нагрузку между ними.

upstream cluster_1c {
    server 192.168.1.101:80 weight=3; # Основной сервер
    server 192.168.1.102:80; # Резервный сервер
    server 192.168.1.103:80 backup; # Сервер только для аварийного режима
}

server {
    listen 80;
    server_name 1c-cluster.example.com;

    location / {
        proxy_pass http://cluster_1c;
        proxy_http_version 1.1;
        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 Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        # Для CS-баз может потребоваться передача конкретного имени публикации
        # proxy_set_header X-1C-Publication-Name "MyBase";
    }
}

Более детально разобраться со структурой конфигурационных файлов Nginx и найти готовые блоки для других задач можно в нашем полном руководстве по nginx.conf.

Настройка SSL/TLS с Let's Encrypt для безопасного доступа

Использование самоподписанных сертификатов в продакшене вызывает предупреждения в браузерах и не обеспечивает должного уровня доверия. Let's Encrypt предоставляет бесплатные доверенные сертификаты с автоматическим обновлением. Подробнее о настройке HTTPS на Nginx читайте в нашем отдельном руководстве.

Автоматическое получение и обновление сертификатов

Установите клиент Certbot и получите сертификат для вашего домена. Предварительно убедитесь, что домен 1c.example.com указывает на IP-адрес вашего сервера Nginx.

# Для Ubuntu/Debian
sudo apt install certbot python3-certbot-nginx

# Для CentOS/RHEL
sudo dnf install certbot python3-certbot-nginx

# Получение сертификата (Nginx должен быть запущен на порту 80)
sudo certbot --nginx -d 1c.example.com

Certbot автоматически изменит конфигурацию Nginx, добавив SSL-настройки. Для автоматического обновления сертификатов добавьте задание в cron. Проверьте, что оно уже создано:

sudo systemctl list-timers | grep certbot
# Или проверьте cron
sudo crontab -l | grep certbot

Если задания нет, создайте его:

echo "0 12 * * * /usr/bin/certbot renew --quiet" | sudo crontab -

Оптимальные параметры безопасности TLS (актуально на 2026)

После получения сертификата важно усилить настройки SSL. Certbot добавляет базовые параметры, но их нужно дополнить. Вот актуальная конфигурация, соответствующая рекомендациям Mozilla Intermediate уровень на 2026 год.

server {
    listen 443 ssl http2;
    server_name 1c.example.com;

    # Пути к сертификатам от Let's Encrypt
    ssl_certificate /etc/letsencrypt/live/1c.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/1c.example.com/privkey.pem;

    # Протоколы безопасности
    ssl_protocols TLSv1.2 TLSv1.3;
    # Отключаем старые и небезопасные протоколы
    ssl_prefer_server_ciphers off;

    # Современный набор шифров
    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
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 1d;
    ssl_session_tickets off;

    # HSTS - принудительное использование HTTPS на срок 6 месяцев
    add_header Strict-Transport-Security "max-age=15768000; includeSubDomains" always;

    # Остальные настройки proxy_pass из предыдущего блока
    location / {
        proxy_pass http://backend_1c;
        # ... все proxy_set_header и таймауты
    }
}

# Редирект с HTTP на HTTPS
server {
    listen 80;
    server_name 1c.example.com;
    return 301 https://$server_name$request_uri;
}

Для ручной установки сертификатов от других центров сертификации воспользуйтесь нашей инструкцией по ручной установке SSL.

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

Базовая настройка работает, но при одновременном подключении десятков пользователей могут возникнуть задержки. Эти параметры адаптируют Nginx для работы с ресурсоёмкими операциями 1С.

Ключевые параметры Nginx для высокой нагрузки

Настройте следующие параметры в основном файле nginx.conf (секция http) и в конфигурации виртуального хоста.

ПараметрРекомендуемое значениеОбъяснение
worker_processesauto;Использовать по одному воркеру на ядро CPU.
worker_connections4096;Максимальное число соединений на один воркер.
proxy_buffers16 32k;Увеличение буферов для передачи данных от 1С клиенту.
proxy_buffer_size128k;Размер буфера для чтения заголовков ответа.
proxy_busy_buffers_size256k;Буферы, которые можно передавать клиенту, пока другие заполняются.
proxy_connect_timeout90s;Таймаут на установку соединения с сервером 1С.
proxy_read_timeout900s;Критичный параметр. Таймаут на чтение ответа от 1С для долгих отчётов.
proxy_send_timeout900s;Таймаут на отправку запроса к 1С.

Также увеличьте лимиты ОС для пользователя nginx. Добавьте в /etc/security/limits.conf:

nginx soft nofile 65536
nginx hard nofile 65536

Мониторинг и метрики для оценки производительности

Включите модуль stub_status для базового мониторинга состояния Nginx. Добавьте в конфигурацию:

location /nginx_status {
    stub_status on;
    access_log off;
    allow 127.0.0.1; # Разрешаем только с локального адреса
    deny all;
}

Обращайте внимание на метрики Active connections, requests per second и количество состояний Reading/Writing/Waiting. Высокое значение Waiting при малом количестве Reading/Writing может указывать на недостаток worker_connections. Мониторинг сервера 1С должен включать потребление оперативной памяти процессом ragent и rmngr, а также загрузку CPU во время выполнения тяжёлых операций. Для комплексной защиты, включая настройку WAF и rate limiting, изучите наше руководство по полной защите веб-серверов.

Диагностика и решение типичных ошибок подключения

Большинство проблем с доступом решается анализом логов и последовательной проверкой каждого звена цепочки.

Чек-лист: «Клиент не может подключиться к 1С через браузер»

  1. Проверка DNS и доступности порта. Убедитесь, что домен разрешается в правильный IP: nslookup 1c.example.com. Проверьте, слушает ли Nginx порт 443: sudo ss -tlnp | grep :443.
  2. Проверка SSL-сертификата. Выполните тестовое подключение: openssl s_client -connect 1c.example.com:443 -servername 1c.example.com. Убедитесь в отсутствии ошибок и что сертификат соответствует домену.
  3. Проверка работы Nginx. Изучите логи ошибок: sudo tail -f /var/log/nginx/error.log. Попробуйте получить статический файл, если он есть в root, или проверьте доступность заглушки, минуя прокси.
  4. Проверка доступности сервера 1С изнутри. С сервера Nginx выполните запрос к внутреннему адресу сервера 1С: curl -v http://192.168.1.100. Убедитесь, что веб-сервер 1С запущен и публикация существует.
  5. Проверка брандмауэра. Убедитесь, что на сервере Nginx разрешён входящий трафик на порты 80 и 443, а на сервере 1С разрешён входящий трафик на порт 80 от IP-адреса Nginx.
  6. Анализ логов 1С. Найдите каталог публикации и проверьте логи веб-сервера 1С (обычно файлы *-error.log).

Анализ логов Nginx и 1С: на что смотреть

В access.log Nginx ищите HTTP-статусы ответов.

  • 502 Bad Gateway: Nginx не смог подключиться к серверу 1С. Причина: сервер 1С не запущен, недоступен по сети, или на нём сработал внутренний брандмауэр. Проверьте upstream.
  • 504 Gateway Timeout: Сервер 1С не ответил в течение proxy_read_timeout. Увеличьте таймаут, проверьте нагрузку на сервере 1С.
  • 400 Bad Request: Возможна проблема с заголовками или размером тела запроса (client_max_body_size).
  • WebSocket connection failed: В браузере. Убедитесь, что в конфигурации Nginx присутствуют директивы proxy_set_header Upgrade и proxy_set_header Connection "upgrade". Проверьте, что ws-module загружен.

В логах веб-сервера 1С (например, в /var/www/1c_published/logs/) ищите сообщения об ошибках аутентификации, нехватке лицензий или проблемах с подключением к базе данных. Для быстрого поиска готовых решений по конфигурации Nginx под разные задачи используйте нашу подборку рабочих конфигураций Nginx.

Заключение и проверка актуальности в 2026 году

Представленное руководство позволяет развернуть безопасный и производительный шлюз для веб-доступа к 1С:Предприятие 8.3. Ключевые этапы: компиляция Nginx с ws-module, настройка проксирования для файловых и CS-баз, внедрение SSL/TLS с Let's Encrypt и оптимизация параметров для высокой нагрузки. Инструкция проверена на актуальность в мае 2026 года и совместима с Nginx версий 1.22+, 1С:Предприятие 8.3.20+ и основными дистрибутивами Linux (Ubuntu 22.04+, RHEL 9+).

При обновлении версий 1С или Nginx сверяйте критические параметры, такие как пути к модулям и синтаксис директив, с официальной документацией. Для дополнительного усиления безопасности рассмотрите внедрение двухфакторной аутентификации на стороне 1С или организацию доступа через VPN для особо критичных конфигураций. Помните, что автоматизация развёртывания подобных конфигураций с помощью инструментов вроде Ansible или Terraform значительно сокращает время восстановления в аварийных ситуациях.

Поделиться:
Сохранить гайд? В закладки браузера