Полезное

Apache как веб-сервер для 1С: настройка и публикация баз

Вадим Заплетин 4 мин чтения
Apache как веб-сервер для 1С: настройка и публикация баз

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

Apache подходит для публикации нескольких баз 1С одновременно, работает на Windows и Linux, поддерживает SSL-шифрование и гибко настраивается через виртуальные хосты. Это делает его оптимальным выбором для компаний с распределённой инфраструктурой и удалёнными сотрудниками.

Требования к серверу и инфраструктуре

Для работы Apache с 1С нужен сервер с установленной платформой 1С:Предприятие 8.3 или выше. Минимальные требования к оборудованию зависят от нагрузки: для 10-20 одновременных пользователей достаточно 4 ядер процессора, 8 ГБ оперативной памяти и SSD на 120 ГБ. Для больших нагрузок (50+ пользователей) потребуется сервер с 8-16 ядрами, 32 ГБ памяти и быстрыми дисками в RAID.

Операционная система — Windows Server 2016/2019/2022 или Linux (Ubuntu Server, CentOS, Red Hat). На Windows удобнее разворачивать, на Linux — дешевле лицензирование и меньше накладных расходов по ресурсам.

Установите Apache версии 2.4 и выше. На Windows используйте сборки Apache Lounge, на Linux ставьте из репозитория командой apt install apache2 (Ubuntu/Debian) или yum install httpd (CentOS/RHEL).

Для работы Apache с 1С нужен модуль mod_proxy, который перенаправляет HTTP-запросы на сервер приложений 1С. Проверьте, что модули mod_proxy и mod_proxy_http включены в конфигурации Apache.

Установка и первичная настройка Apache

Установка на Windows Server

Скачайте последнюю версию Apache с сайта Apache Lounge. Распакуйте архив в папку C:\Apache24. Откройте командную строку от имени администратора, перейдите в папку C:\Apache24\bin и выполните команду:

httpd.exe -k install

Это установит Apache как службу Windows. Запустите службу командой:

httpd.exe -k start

Откройте браузер и перейдите по адресу http://localhost. Если видите стандартную страницу Apache «It works!» — установка прошла успешно.

Установка на Linux

На Ubuntu или Debian выполните:

sudo apt update
sudo apt install apache2

На CentOS или RHEL:

sudo yum install httpd
sudo systemctl start httpd
sudo systemctl enable httpd

Проверьте статус службы командой sudo systemctl status apache2 (Ubuntu) или sudo systemctl status httpd (CentOS). Если служба запущена, откройте браузер и зайдите на http://IP-адрес-сервера. Должна открыться тестовая страница Apache.

Включение необходимых модулей

Для проксирования запросов к 1С включите модули mod_proxy и mod_proxy_http.

На Windows откройте файл C:\Apache24\conf\httpd.conf в текстовом редакторе. Найдите строки:

#LoadModule proxy_module modules/mod_proxy.so
#LoadModule proxy_http_module modules/mod_proxy_http.so

Уберите символ # в начале, чтобы строки выглядели так:

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so

На Linux выполните:

sudo a2enmod proxy
sudo a2enmod proxy_http
sudo systemctl restart apache2

Перезапустите Apache командой httpd.exe -k restart (Windows) или sudo systemctl restart apache2 (Linux).

Публикация информационной базы 1С на веб-сервере Apache

Публикация базы 1С через Apache состоит из двух этапов: настройка публикации на стороне сервера 1С и настройка виртуального хоста в Apache.

Настройка публикации в 1С:Предприятие

Откройте консоль администрирования сервера 1С (пуск → 1С:Предприятие → Администрирование серверов 1С:Предприятия). Подключитесь к серверу приложений, найдите нужную информационную базу в списке и откройте её свойства.

Перейдите на вкладку «Веб-сервисы» и поставьте галочку «Публиковать на веб-сервере». Укажите имя публикации, например accounting. Это имя будет использоваться в URL для доступа к базе. Запомните или запишите порт, на котором работает сервер приложений 1С (по умолчанию 1540 или 1541).

Сохраните изменения. Теперь база доступна по адресу http://localhost:1540/accounting, но только с локального сервера.

Настройка виртуального хоста Apache

Виртуальный хост — это конфигурация Apache, которая перенаправляет запросы с внешнего URL на внутренний адрес сервера 1С.

На Windows откройте файл C:\Apache24\conf\httpd.conf и найдите строку:

#Include conf/extra/httpd-vhosts.conf

Уберите # в начале, чтобы включить поддержку виртуальных хостов:

Include conf/extra/httpd-vhosts.conf

Откройте файл C:\Apache24\conf\extra\httpd-vhosts.conf и добавьте в конец файла:

<VirtualHost *:80>
    ServerName accounting.example.com
    ProxyPreserveHost On
    ProxyPass / http://localhost:1540/accounting/
    ProxyPassReverse / http://localhost:1540/accounting/
</VirtualHost>

Здесь accounting.example.com — доменное имя, по которому пользователи будут заходить в базу. http://localhost:1540/accounting/ — внутренний адрес базы на сервере 1С.

На Linux создайте файл конфигурации в папке /etc/apache2/sites-available/:

sudo nano /etc/apache2/sites-available/accounting.conf

Добавьте содержимое:

<VirtualHost *:80>
    ServerName accounting.example.com
    ProxyPreserveHost On
    ProxyPass / http://localhost:1540/accounting/
    ProxyPassReverse / http://localhost:1540/accounting/
</VirtualHost>

Сохраните файл и активируйте конфигурацию:

sudo a2ensite accounting.conf
sudo systemctl reload apache2

Теперь откройте браузер и перейдите по адресу http://accounting.example.com. Должна открыться форма входа в базу 1С.

Публикация нескольких баз 1С на веб-сервере Apache

Apache позволяет публиковать несколько информационных баз 1С одновременно. Для этого создайте отдельный виртуальный хост для каждой базы.

Предположим, у вас три базы: «Бухгалтерия», «Зарплата» и «Склад». Публикации в 1С называются accounting, payroll и warehouse. Они работают на портах 1540, 1541 и 1542 соответственно.

Откройте файл конфигурации виртуальных хостов (на Windows — C:\Apache24\conf\extra\httpd-vhosts.conf, на Linux создайте отдельные файлы в /etc/apache2/sites-available/).

Добавьте три блока VirtualHost:

<VirtualHost *:80>
    ServerName accounting.example.com
    ProxyPreserveHost On
    ProxyPass / http://localhost:1540/accounting/
    ProxyPassReverse / http://localhost:1540/accounting/
</VirtualHost>

<VirtualHost *:80>
    ServerName payroll.example.com
    ProxyPreserveHost On
    ProxyPass / http://localhost:1541/payroll/
    ProxyPassReverse / http://localhost:1541/payroll/
</VirtualHost>

<VirtualHost *:80>
    ServerName warehouse.example.com
    ProxyPreserveHost On
    ProxyPass / http://localhost:1542/warehouse/
    ProxyPassReverse / http://localhost:1542/warehouse/
</VirtualHost>

Перезапустите Apache. Теперь три базы доступны по разным доменным именам: accounting.example.com, payroll.example.com, warehouse.example.com.

Для каждой базы укажите A-записи в DNS, которые указывают на IP-адрес вашего сервера с Apache.

Настройка HTTPS и SSL-сертификатов

Для безопасной работы с 1С через интернет настройте HTTPS с SSL-сертификатом. Это шифрует трафик между браузером пользователя и сервером, защищая логины, пароли и данные.

Получение SSL-сертификата

Для тестирования используйте самоподписанный сертификат. Для боевой эксплуатации получите бесплатный сертификат Let’s Encrypt или купите коммерческий у центра сертификации.

Для получения сертификата Let’s Encrypt на Linux установите certbot:

sudo apt install certbot python3-certbot-apache

Запустите certbot:

sudo certbot --apache -d accounting.example.com

Certbot автоматически получит сертификат, настроит HTTPS и перезапустит Apache. Сертификат будет автоматически продлеваться каждые 90 дней.

Настройка виртуального хоста с HTTPS

Для ручной настройки откройте конфигурацию виртуального хоста и добавьте блок для порта 443:

<VirtualHost *:443>
    ServerName accounting.example.com
    SSLEngine on
    SSLCertificateFile /path/to/certificate.crt
    SSLCertificateKeyFile /path/to/private.key
    SSLCertificateChainFile /path/to/chain.crt
    ProxyPreserveHost On
    ProxyPass / http://localhost:1540/accounting/
    ProxyPassReverse / http://localhost:1540/accounting/
</VirtualHost>

Включите модуль SSL на Linux:

sudo a2enmod ssl
sudo systemctl restart apache2

На Windows убедитесь, что в httpd.conf раскомментирована строка:

LoadModule ssl_module modules/mod_ssl.so

Перезапустите Apache. Теперь база доступна по адресу https://accounting.example.com.

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

Для высоких нагрузок настройте кеширование, сжатие и балансировку между несколькими серверами приложений 1С.

Включение сжатия gzip

Сжатие уменьшает размер передаваемых данных и ускоряет загрузку страниц. Включите модуль mod_deflate в Apache:

На Linux:

sudo a2enmod deflate
sudo systemctl restart apache2

На Windows раскомментируйте в httpd.conf:

LoadModule deflate_module modules/mod_deflate.so

Добавьте в виртуальный хост:

<IfModule mod_deflate.c>
    AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/javascript
</IfModule>

Балансировка нагрузки между серверами 1С

Если у вас несколько серверов приложений 1С, настройте балансировку через mod_proxy_balancer.

Включите модули:

sudo a2enmod proxy_balancer
sudo a2enmod lbmethod_byrequests
sudo systemctl restart apache2

Добавьте в конфигурацию виртуального хоста:

<Proxy balancer://mycluster>
    BalancerMember http://server1:1540/accounting/
    BalancerMember http://server2:1540/accounting/
    ProxySet lbmethod=byrequests
</Proxy>

ProxyPass / balancer://mycluster/
ProxyPassReverse / balancer://mycluster/

Теперь Apache распределяет запросы между двумя серверами 1С, увеличивая пропускную способность и отказоустойчивость.

Для таких конфигураций используйте серверы с производительными процессорами и достаточным объёмом оперативной памяти, чтобы обеспечить быструю обработку запросов от множества пользователей одновременно.

Мониторинг и логирование

Настройте логи Apache для отслеживания ошибок и анализа посещаемости.

Логи хранятся в папке C:\Apache24\logs (Windows) или /var/log/apache2/ (Linux). Два основных файла:

  • access.log — все запросы к серверу (IP, время, URL, код ответа)
  • error.log — ошибки Apache и приложений

Для каждого виртуального хоста создавайте отдельные логи. Добавьте в конфигурацию виртуального хоста:

ErrorLog ${APACHE_LOG_DIR}/accounting_error.log
CustomLog ${APACHE_LOG_DIR}/accounting_access.log combined

На Windows замените ${APACHE_LOG_DIR} на logs/.

Регулярно проверяйте логи командой tail -f /var/log/apache2/error.log (Linux) или открывайте файлы в текстовом редакторе (Windows).

Для анализа посещаемости используйте инструменты типа GoAccess или AWStats, которые строят отчёты из логов Apache.

Частые проблемы и их решения

Ошибка 502 Bad Gateway

Означает, что Apache не может подключиться к серверу приложений 1С. Проверьте, запущена ли служба сервера 1С, правильно ли указан порт в ProxyPass и доступен ли порт (не заблокирован файрволом).

Ошибка 404 Not Found при доступе к базе

Проверьте имя публикации в консоли администрирования 1С и в конфигурации виртуального хоста Apache. Они должны совпадать. Убедитесь, что в URL в ProxyPass стоит слэш в конце: /accounting/, а не /accounting.

Медленная загрузка страниц

Включите сжатие gzip, проверьте производительность сервера (загрузка CPU, памяти, дисков). Увеличьте количество рабочих процессов сервера приложений 1С или настройте балансировку.

Сертификат SSL не доверяется браузером

Если используется самоподписанный сертификат, браузер выдаст предупреждение. Для продакшена получите сертификат от доверенного центра сертификации (Let’s Encrypt, Comodo, DigiCert).

Не работает авторизация в 1С через веб-интерфейс

Проверьте, что в настройках публикации базы 1С включена аутентификация и указаны права пользователей. Убедитесь, что в Apache включена директива ProxyPreserveHost On, иначе 1С не сможет корректно обработать запросы авторизации.

Практические рекомендации по развёртыванию

Используйте отдельный сервер для Apache и сервера приложений 1С в крупных инсталляциях. Это упростит масштабирование и обслуживание. Для небольших компаний (до 30 пользователей) можно разместить Apache и 1С на одном сервере.

Настройте резервное копирование конфигурационных файлов Apache (httpd.conf, файлы виртуальных хостов) и сертификатов SSL. Храните копии на отдельном сервере или в облаке.

Регулярно обновляйте Apache и модули до последних стабильных версий. Это закрывает уязвимости и улучшает производительность.

Настройте межсетевой экран (firewall) так, чтобы извне были доступны только порты 80 (HTTP) и 443 (HTTPS). Порты сервера приложений 1С (1540-1560) должны быть закрыты от внешнего доступа — к ним подключается только Apache на локальном интерфейсе.

Документируйте все изменения в конфигурации Apache и 1С. Храните файлы конфигурации в системе контроля версий (Git), чтобы можно было откатиться к предыдущей версии при сбоях.

Для критически важных систем настройте отказоустойчивость: два или более сервера с Apache и балансировщиком нагрузки впереди (HAProxy, nginx). Это обеспечит работу сервиса даже при выходе из строя одного из серверов.

Можно ли использовать Apache для публикации базы 1С только в локальной сети?

Да, Apache работает в локальной сети без публичного IP-адреса. Настройте виртуальный хост с внутренним доменным именем или IP-адресом сервера. Пользователи из локальной сети будут заходить по адресу типа http://192.168.1.10 или http://accounting.local. В этом случае SSL не обязателен, но рекомендуется для защиты данных от перехвата внутри сети.

Сколько одновременных пользователей выдержит Apache на одном сервере?

Сам Apache выдерживает тысячи одновременных подключений. Ограничение возникает на стороне сервера приложений 1С: производительность зависит от конфигурации базы, количества рабочих процессов 1С, мощности процессора и объёма памяти. Для 50 пользователей достаточно сервера с 8 ядрами и 32 ГБ ОЗУ. Для 200+ пользователей нужна кластерная конфигурация с несколькими серверами приложений 1С и балансировкой через Apache.

Чем Apache отличается от nginx для публикации 1С?

Apache проще в настройке для начинающих, имеет больше документации на русском языке и широко поддерживается разработчиками 1С. Nginx потребляет меньше памяти и быстрее обрабатывает статические файлы, но его конфигурация сложнее. Для большинства задач с 1С оба сервера работают одинаково хорошо. Выбирайте Apache, если нужна простота развёртывания, и nginx — если критична максимальная производительность при больших нагрузках.