Обзор развертывания 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-сертификатов. Процесс включает следующие этапы:
-
Обновление системы: выполнение команды
apt updateдля синхронизации списков пакетов. -
Установка компонентов: установка пакетов
nginx,certbot,python3-certbot-nginxиopenssl. -
Подготовка окружения: создание необходимых директорий с правами доступа для пользователя
www-data. -
Настройка HTTP-сервера: создание временной конфигурации, которая позволяет серверу отвечать на запросы Let's Encrypt через
.well-known/acme-challenge/, но при этом перенаправляет весь остальной трафик на HTTPS или выдает заглушку. -
Получение SSL-сертификата: запуск
certbotв режиме--webrootдля автоматического получения сертификата от Let's Encrypt. -
Настройка 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.
Инструкция по обновлению приложения¶
Для обновления веб-сервера необходимо выполнить стандартные команды управления пакетами:
После обновления пакетов рекомендуется перезапустить сервис:
Расположение конфигурационных файлов и данных¶
-
Основной конфиг сайта:
/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