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

Обзор развертывания Nginx с автоматическим получением SSL на сервере

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

Для корректной работы приложения сервер должен соответствовать следующим требованиям:

  • Операционная система: Linux (устанавливается Docker).

  • Права доступа: Права суперпользователя (root) для установки системных пакетов и управления контейнерами.

  • Доменное имя: Наличие настроенного DNS-записи, указывающей на IP сервера.

  • Порты: Должны быть открыты порты 80 (HTTP) и 443 (HTTPS).

FDQN итоговой панели на домене hostkey.in

Для работы SSL-сертификатов используется динамический шаблон доменного имени:

Параметр Значение
Префикс nginx-certbot
Домен hostkey.in
Полный шаблон nginx-certbot{Server_ID_from_Invapi}.hostkey.in

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

Все конфигурационные файлы и данные приложения сосредоточены в директории /data/nginx/:

  • /data/nginx/docker-compose.yml — основной файл развертывания контейнера.

  • /data/nginx/user_conf.d/ — каталог с пользовательскими конфигурациями Nginx.

  • /data/nginx/nginx-certbot.env — файл с переменными окружения для контейнера.

Данные сертификатов хранятся в Docker Volume: nginx_secrets.

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

Процесс развертывания включает несколько этапов подготовки системы и запуска сервиса:

  1. Подготовка среды: Установка Docker на сервер.

  2. Создание структуры каталогов: Создаются директории /data, /data/nginx и /data/nginx/user_conf.d с правами доступа 0640.

  3. Настройка сетевой доступности: В файл /etc/hosts добавляется запись для локального разрешения доменного имени сервера.

  4. Генерация конфигураций:

  5. Создается файл docker-compose.yml.

  6. Создается конфигурационный файл Nginx в директории user_conf.d, который настраивает автоматический редирект и использование SSL-сертификатов.

  7. Подготавливается файл переменных окружения .env.

  8. Подготовка хранилища: Создается Docker Volume с именем nginx_secrets для хранения сертификатов Let's Encrypt.

  9. Запуск сервиса: Выполняется команда docker compose up -d в директории /data/nginx/.

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

Приложение развертывается с использованием одного основного контейнера:

Контейнер Nginx (с поддержкой Certbot)

  • Образ: jonasal/nginx-certbot:latest

  • Порты:

  • 80:80 (HTTP)

  • 443:443 (HTTPS)

  • Тома (volumes):

  • nginx_secrets:/etc/letsencrypt — для хранения сертификатов.

  • ./user_conf.d:/etc/nginx/user_conf.d — для пользовательских настроек Nginx.

  • Переменные окружения:

  • CERTBOT_EMAIL=hkadm@hostkey.com (email для регистрации в Let's Encrypt).

  • Параметры из файла ./nginx-certbot.env.

  • Политика перезапуска: unless-stopped (перезапуск при сбое или после перезагрузки сервера, если контейнер не был остановлен вручную).

Инструкция по обновлению приложения

Для обновления используемого образа Nginx необходимо выполнить следующие действия:

  1. Перейти в директорию с конфигурацией:

    cd /data/nginx/
    

  2. Выполнить обновление образов и перезапуск контейнера:

    docker compose pull && docker compose up -d
    

Расположение конфигурационных файлов и данных

  • Конфигурация Nginx: /data/nginx/user_conf.d/{prefix}{server_id}.{zone}.conf

  • Переменные окружения Docker: /data/nginx/nginx-certbot.env

  • Файл управления контейнерами: /data/nginx/docker-compose.yml

Доступные порты для подключения

Порт Протокол Назначение
80 TCP HTTP (для проверки сертификатов и перенаправления)
443 TCP HTTPS (основной защищенный трафик)
question_mark
Я могу вам чем-то помочь?
question_mark
ИИ Помощник ×