Перейти к содержанию

Обзор развертывания Zabbix Proxy и Nginx-Certbot на сервере

Предпосылки и предварительные требования

Для корректной работы системы необходимо наличие сервера с операционной системой Ubuntu 22.04. Требуется наличие прав суперпользователя (root) для установки пакетов и управления службами.

Система использует следующие сетевые порты и протоколы: - Порт 8083 для внутреннего проксирования запросов к приложению. - Стандартные порты HTTP и HTTPS для работы веб-сервера Nginx и получения SSL-сертификатов.

Структура файлов и каталогов

Конфигурационные файлы и данные приложения размещаются в следующих директориях:

  • /root/nginx/ — каталог для запуска контейнеров Nginx и Certbot.
  • /root/nginx/compose.yml — файл конфигурации Docker Compose для веб-сервера.
  • /data/nginx/user_conf.d/ — директория с пользовательскими конфигурациями Nginx.
  • /data/nginx/nginx-certbot.env — файл переменных окружения для сервиса Nginx-Certbot.
  • /etc/zabbix/zabbix_proxy.conf — основной файл конфигурации прокси Zabbix.
  • /var/lib/zabbix/ — каталог для хранения базы данных SQLite (при использовании).

Процесс установки приложения

Установка выполняется в два этапа: настройка прокси-сервера Zabbix и развертывание веб-сервера с поддержкой SSL.

Установка Zabbix Proxy

  1. Устанавливаются зависимости системы: ca-certificates, curl, gnupg, apt-transport-https.
  2. Скачивается и устанавливается пакет репозитория zabbix-release для версии Ubuntu 22.04.
  3. В зависимости от выбранной базы данных устанавливается соответствующий пакет:
  4. zabbix-proxy-sqlite3 и zabbix-sql-scripts для SQLite.
  5. zabbix-proxy-mysql для MySQL.
  6. zabbix-proxy-pgsql для PostgreSQL.
  7. Создается каталог /var/lib/zabbix с правами доступа для пользователя zabbix.
  8. Конфигурируется файл /etc/zabbix/zabbix_proxy.conf с параметрами подключения к базе данных и серверу Zabbix.
  9. Сервис zabbix-proxy активируется и запускается.

Развертывание Nginx и Certbot

  1. Создается каталог /root/nginx.
  2. Генерируется файл compose.yml в директории /root/nginx.
  3. Обновляется конфигурация Nginx в файле /data/nginx/user_conf.d/{{ prefix }}{{ server_id }}.hostkey.in.conf:
  4. Удаляется существующая строка proxy_pass.
  5. Добавляется новая строка proxy_pass http://127.0.0.1:8083; внутри блока location /.
  6. Запускаются контейнеры через команду docker compose up -d в директории /root/nginx.

Базы данных

Настройка базы данных зависит от выбранного бэкенда:

  • SQLite:
  • База данных хранится в файле /var/lib/zabbix/zabbix_proxy.db.
  • В конфигурации /etc/zabbix/zabbix_proxy.conf параметр DBName указывает путь к этому файлу.

  • MySQL / PostgreSQL:

  • Подключение осуществляется по сети.
  • В конфигурации /etc/zabbix/zabbix_proxy.conf задаются параметры:
    • DBName — имя базы данных.
    • DBUser — имя пользователя.
    • DBPassword — пароль.
    • DBHost — адрес хоста базы данных.

Контейнеры Docker и их запуск

Для работы веб-сервера и получения SSL-сертификатов используется Docker Compose.

Файл конфигурации /root/nginx/compose.yml описывает следующий сервис:

  • nginx:
  • Образ: jonasal/nginx-certbot:latest.
  • Политика перезапуска: unless-stopped.
  • Режим сети: host.
  • Переменные окружения:
    • CERTBOT_EMAIL=hkadm@hostkey.com.
    • Дополнительные переменные из файла /data/nginx/nginx-certbot.env.
  • Подключенные тома:
    • nginx_secrets (внешний том) монтируется в /etc/letsencrypt для хранения сертификатов.
    • /data/nginx/user_conf.d монтируется в /etc/nginx/user_conf.d для пользовательских конфигов.

Запуск контейнеров выполняется командой:

docker compose up -d
в директории /root/nginx.

Прокси серверы

Веб-сервер Nginx работает в режиме прокси-сервера с поддержкой автоматического получения и обновления SSL-сертификатов через Certbot.

  • Доменные имена и конфигурации размещаются в /data/nginx/user_conf.d/.
  • В конфигурационном файле хоста ({{ prefix }}{{ server_id }}.hostkey.in.conf) настроена маршрутизация запросов:
  • Все запросы к корневому пути / перенаправляются на локальный адрес http://127.0.0.1:8083.
  • Сертификаты Let's Encrypt хранятся в томе nginx_secrets по пути /etc/letsencrypt внутри контейнера.

Настройки прав

Права доступа к файлам и директориям настроены следующим образом:

  • Директория /root/nginx принадлежит пользователю root с правами 0755.
  • Файл /root/nginx/compose.yml имеет права 0644 и принадлежит root.
  • Директория /var/lib/zabbix принадлежит пользователю zabbix с правами 0750.
  • Файлы конфигурации Nginx в /data/nginx/user_conf.d/ доступны для чтения и записи в соответствии с правами владельца контейнера.

Запуск, остановка и обновление

Управление сервисами осуществляется через стандартные команды системы и Docker.

Zabbix Proxy

  • Запуск и активация при загрузке:
    systemctl start zabbix-proxy
    systemctl enable zabbix-proxy
    
  • Перезапуск сервиса:
    systemctl restart zabbix-proxy
    

Nginx и Certbot

  • Запуск контейнеров:
    cd /root/nginx
    docker compose up -d
    
  • Остановка контейнеров:
    cd /root/nginx
    docker compose down
    
  • Обновление конфигурации и перезапуск: После изменения файлов в /data/nginx/user_conf.d/ или /root/nginx/compose.yml необходимо выполнить команду docker compose up -d для применения изменений.
question_mark
Я могу вам чем-то помочь?
question_mark
ИИ Помощник ×