Обзор развертывания Nginx на сервере¶
Предварительные требования и базовые условия¶
Перед развертыванием приложения Nginx должны быть выполнены следующие требования:
-
Операционная система: Debian или Ubuntu (требуется менеджер пакетов
apt). -
Привилегии: Для установки пакетов и настройки сервисов требуется доступ root или права sudo.
-
Домен: Требуется действительное доменное имя в зоне
hostkey.in. -
Порты: Порты 80 (HTTP) и 443 (HTTPS) должны быть открыты и доступны из интернета.
FQDN конечного узла¶
Полное доменное имя (FQDN) развернутого экземпляра имеет следующий формат: nginx<Server ID>.hostkey.in
Приложение доступно через HTTPS на порту 443.
Структура файлов и каталогов¶
В процессе развертывания создается следующая структура каталогов для веб-корней, сертификатов и конфигурации:
-
/var/www/html: Каталог веб-корня по умолчанию. -
/var/www/letsencrypt: Каталог веб-корня, используемый для проверок ACME от Let's Encrypt. -
/etc/nginx/sites-available: Расположение файлов конфигурации доступных сайтов. -
/etc/nginx/sites-enabled: Расположение символических ссылок на активные конфигурации сайтов. -
/etc/nginx/user_conf.d: Каталог для дополнительных фрагментов пользовательской конфигурации. -
/etc/letsencrypt/live: Место хранения активных SSL-сертификатов и ключей. -
/etc/letsencrypt/renewal-hooks/deploy: Расположение скриптов, выполняемых после обновления сертификата.
Процесс установки приложения¶
Приложение устанавливается с помощью менеджера пакетов apt. Устанавливаются следующие компоненты:
-
nginx: Программное обеспечение веб-сервера. -
certbot: ACME-клиент для получения SSL-сертификатов. -
python3-certbot-nginx: Плагин Nginx для Certbot. -
openssl: Криптографический набор инструментов.
Процесс установки включает обновление кэша пакетов, установку необходимых пакетов и включение автоматического запуска сервиса nginx при загрузке системы.
Права доступа и безопасность¶
Меры безопасности и контроль доступа настроены следующим образом:
-
Сервис
nginxвключен и запущен черезsystemd. -
Конфигурация сайта Nginx по умолчанию удалена для предотвращения конфликтов.
-
SSL-сертификаты получены с использованием протокола ACME от Let's Encrypt с RSA-ключом размером 4096 бит.
-
HTTP-трафик на порту 80 перенаправляется на HTTPS на порт 443.
-
Настроен хук развертывания для автоматической перезагрузки Nginx при обновлении сертификата.
Контейнеры Docker и их развертывание¶
В данном развертывании контейнеры Docker не используются. Приложение работает как нативный системный сервис, управляемый через systemd.
Прокси-серверы¶
Nginx выступает в роли основного прокси-сервера со следующей конфигурацией:
-
SSL/TLS: Включено с использованием сертификатов от Let's Encrypt.
-
Перенаправление HTTP на HTTPS: Весь трафик на порту 80 перенаправляется на порт 443.
-
Проверка ACME: Специальный блок
locationобрабатывает запросы к/.well-known/acme-challenge/для обеспечения выдачи и обновления сертификатов. -
Файл конфигурации: Основная конфигурация хранится в
/etc/nginx/sites-available/<fqdn>.confи связана с/etc/nginx/sites-enabled/.
Настройки прав доступа¶
Права доступа к файлам и каталогам настроены следующим образом:
-
/var/www/html: Владелецwww-data:www-data, режим0755. -
/var/www/letsencrypt: Владелецwww-data:www-data, режим0755. -
/etc/nginx/sites-available/<fqdn>.conf: Владелецroot:root, режим0644. -
/etc/letsencrypt/renewal-hooks/deploy/reload-nginx.sh: Владелецroot:root, режим0755.
Расположение файлов конфигурации и данных¶
Ключевые файлы конфигурации и места хранения данных включают:
-
Конфигурация сайта:
/etc/nginx/sites-available/<fqdn>.conf -
Ссылка на активный сайт:
/etc/nginx/sites-enabled/<fqdn>.conf -
SSL-сертификаты:
/etc/letsencrypt/live/<fqdn>/ -
Параметры DH:
/etc/letsencrypt/dhparams/dhparam.pem -
Фрагменты пользовательской конфигурации:
/etc/nginx/user_conf.d/
Доступные порты для подключения¶
Следующие порты настроены для внешнего и внутреннего доступа:
| Порт | Протокол | Описание |
|---|---|---|
| 80 | HTTP | Используется для проверок ACME и перенаправления трафика на HTTPS. |
| 443 | HTTPS | Основной порт для защищенного веб-трафика. |
Запуск, остановка и обновление¶
Сервис Nginx управляется с помощью systemd. Для управления сервисом используются следующие команды:
-
Запуск сервиса:
-
Остановка сервиса:
-
Перезагрузка конфигурации:
-
Проверка статуса сервиса:
-
Проверка синтаксиса конфигурации: