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

Обзор развертывания Nginx на сервере

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

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

  • Операционная система: Debian или Ubuntu.

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

  • Доменное имя: наличие настроенного DNS для управления SSL-сертификатами через ACME.

  • Сетевые параметры: открытые порты 80 (HTTP) и 443 (HTTPS).

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

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

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

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

В процессе установки создаются и используются следующие директории:

  • /etc/nginx/sites-available/ — хранение доступных конфигурационных файлов сайтов.

  • /etc/nginx/sites-enabled/ — активные конфигурации (символические ссылки).

  • /var/www/html — корневая директория для веб-контента.

  • /var/www/letsencrypt — рабочая директория для прохождения проверки Let's Encrypt (ACME challenge).

  • /etc/nginx/user_conf.d — пользовательская директория для дополнительных конфигурационных файлов Nginx.

  • /etc/letsencrypt/live/ — хранение SSL-сертификатов и закрытых ключей.

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

Установка выполняется путем настройки системного веб-сервера Nginx с автоматическим получением SSL-сертификатов. Процесс включает следующие этапы:

  1. Обновление системы: выполнение команды apt update для синхронизации списков пакетов.

  2. Установка компонентов: установка пакетов nginx, certbot, python3-certbot-nginx и openssl.

  3. Подготовка окружения: создание необходимых директорий с правами доступа для пользователя www-data.

  4. Настройка HTTP-сервера: создание временной конфигурации, которая позволяет серверу отвечать на запросы Let's Encrypt через .well-known/acme-challenge/, но при этом перенаправляет весь остальной трафик на HTTPS или выдает заглушку.

  5. Получение SSL-сертификата: запуск certbot в режиме --webroot для автоматического получения сертификата от Let's Encrypt.

  6. Настройка HTTPS-сервера: создание итоговой конфигурации с поддержкой HTTP/2, настройкой редиректа с порта 80 на 443 и подключением полученных SSL-сертификатов.

Права доступа и безопасность

  • Пользователь: Веб-контент и директория для проверки ACME принадлежат пользователю www-data.

  • Конфигурация: Системные файлы конфигурации Nginx имеют права 0644 и принадлежат пользователю root.

  • Безопасность SSL: Используется алгоритм шифрования RSA с размером ключа 4096 бит.

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

В данной конфигурации контейнеры Docker не используются; приложение развертывается непосредственно в операционной системе как системный сервис.

Кастомные скрипты и дополнительные настройки

После установки основного веб-сервера выполняется автоматическая настройка:

  • Скрипт обновления сертификатов: создается исполняемый файл /etc/letsencrypt/renewal-hooks/deploy/reload-nginx.sh, который автоматически перезагружает конфигурацию Nginx после успешного продления SSL-сертификата.

  • Пользовательские конфиги: если в системе присутствует директория с пользовательскими настройками, их содержимое копируется в /etc/nginx/user_conf.d для подключения через include.

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

Для обновления веб-сервера необходимо выполнить стандартные команды управления пакетами:

apt update && apt upgrade nginx

После обновления пакетов рекомендуется перезапустить сервис:

systemctl restart nginx

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

  • Основной конфиг сайта: /etc/nginx/sites-available/nginx{Server_ID}.hostkey.in.conf

  • Пользовательские настройки: /etc/nginx/user_conf.d/*.conf

  • Сертификаты (Fullchain): /etc/letsencrypt/live/nginx{Server_ID}.hostkey.in/fullchain.pem

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

Порт Протокол Назначение
80 TCP (HTTP) Перенаправление на HTTPS / ACME challenge
443 TCP (HTTPS) Зашифрованный доступ к веб-сервису

Запуск, остановка приложения

Управление сервисом осуществляется через systemctl:

  • Запуск: systemctl start nginx

  • Остановка: systemctl stop nginx

  • Перезагрузка (без разрыва соединений): systemctl reload nginx

  • Проверка статуса: systemctl status nginx

question_mark
Я могу вам чем-то помочь?
question_mark
ИИ Помощник ×