Обзор развертывания Nginx на сервере¶
Предварительные требования¶
Для успешного развертывания веб-сервера должны быть соблюдены следующие условия:
-
Операционная система: Debian или Ubuntu.
-
Права доступа: права суперпользователя (
root) для установки пакетов и изменения системных конфигураций. -
Доменное имя: наличие настроенного домена, соответствующего шаблону.
-
Порты:
-
80(HTTP) — используется для проверки владения доменом (ACME challenge) и перенаправления на HTTPS. -
443(HTTPS) — основной порт для работы веб-сервиса по защищенному протоколу.
FQDN итоговой панели на домене hostkey.in¶
| Параметр | Значение | | Префикс | nginx | | Домен | hostkey.in | | Полный шаблон | nginx{Server_ID_from_Invapi}.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-сертификатов.
Процесс установки приложения¶
Установка выполняется путем автоматизированного развертывания пакетов и настройки системных служб:
-
Обновление системы: обновление кэша пакетного менеджера
apt. -
Установка компонентов: установка веб-сервера
nginx, клиента для получения сертификатовcertbot(включая плагин для nginx) и библиотекиopenssl. -
Настройка окружения:
-
Создание необходимых директорий с правами доступа
www-data. -
Синхронизация пользовательских конфигураций из
/data/nginx/user_conf.dв системную директорию/etc/nginx/user_conf.d. -
Настройка HTTP-сервера: создание временной конфигурации для работы по порту 80, которая позволяет пройти проверку Let's Encrypt и отображает сообщение ожидания сертификата.
-
Получение SSL-сертификатов: автоматический запрос и получение сертификатов через
certbotс использованием методаwebroot. -
Настройка HTTPS-сервера: создание финальной конфигурации, включающей:
-
Перенаправление (redirect) с HTTP на HTTPS.
-
Настройку SSL/TLS (включая поддержку протокола HTTP/2).
-
Подключение пользовательских конфигураций из
/etc/nginx/user_conf.d/*.conf.
Права доступа и безопасность¶
-
Пользователь: веб-контент доступен пользователю
www-data. -
Конфигурации: системные файлы Nginx имеют владельца
rootс правами на чтение (0644). -
Безопасность SSL: используется алгоритм шифрования RSA с размером ключа 4096 бит.
-
Брандмауэр: должны быть открыты порты
80и443.
Контейнеры Docker и их запуск¶
В данном проекте контейнеры Docker не используются; приложение развертывается непосредственно в операционной системе как системный сервис.
Кастомные скрипты и дополнительные настройки¶
Для обеспечения автоматического обновления сертификатов используется установочный скрипт:
-
Расположение:
/etc/letsencrypt/renewal-hooks/deploy/reload-nginx.sh -
Назначение: автоматическая перезагрузка службы
nginxпосле успешного продления SSL-сертификата.
Также в системе выполняется модификация файла /etc/hosts, где IP-адрес 127.0.0.1 связывается с локальным FQDN сервера для обеспечения корректной работы внутри системы.
Инструкция по обновлению приложения¶
Для обновления веб-сервера необходимо выполнить обновление системных пакетов:
Расположение конфигурационных файлов и данных¶
-
Основная конфигурация:
/etc/nginx/sites-available/{FQDN}.conf -
Пользовательские настройки:
/etc/nginx/user_conf.d/*.conf -
Сертификаты (публичный ключ):
/etc/letsencrypt/live/{FQDN}/fullchain.pem -
Сертификаты (приватный ключ):
/etc/letsencrypt/live/{FQDN}/privkey.pem
Доступные порты для подключения¶
| Порт | Протокол | Назначение |
|---|---|---|
| 80 | TCP | HTTP (перенаправление на HTTPS) |
| 443 | TCP | HTTPS (основной трафик) |
Запуск, остановка приложения¶
Управление сервисом осуществляется через systemctl:
-
Запуск:
systemctl start nginx -
Остановка:
systemctl stop nginx -
Перезагрузка конфигурации:
systemctl reload nginx -
Проверка статуса:
systemctl status nginx