Обзор развертывания Nginx на сервере¶
Предварительные требования и базовые условия¶
Перед началом развертывания необходимо выполнить следующие системные требования:
-
Операционная система: Debian или Ubuntu
-
Привилегии: доступ
rootили праваsudo -
Сеть: Межсетевой экран должен разрешать доступ к портам 80 и 443
-
Домен: Требуется действительная регистрация домена в зоне
hostkey.in -
Зависимости: Система должна иметь доступ в Интернет для загрузки пакетов и получения сертификатов от Let's Encrypt
FQDN итоговой панели¶
Приложение доступно по следующему формату Полного Квалифицированного Именного Домена (FQDN):
-
Формат:
<prefix>Server ID.hostkey.in:443 -
Префикс:
nginx -
Пример:
nginx123.hostkey.in -
Порт: 443 (HTTPS)
Структура файлов и каталогов¶
В процессе развертывания на сервере создаются следующие каталоги и файлы:
-
/var/www/html: Основной корневой каталог веб-сайта, принадлежащий пользователюwww-data -
/var/www/letsencrypt: Корневой каталог для валидации вызовов ACME, принадлежащий пользователюwww-data -
/etc/letsencrypt/live/<fqdn>: Содержит полную цепочку SSL-сертификата (fullchain.pem), приватный ключ (privkey.pem) и сертификат цепочки доверия (chain.pem) -
/etc/nginx/sites-available/<fqdn>.conf: Основной файл конфигурации Nginx для сайта -
/etc/nginx/sites-enabled/<fqdn>.conf: Символическая ссылка, активирующая конфигурацию сайта -
/etc/nginx/user_conf.d: Каталог для дополнительных пользовательских конфигураций Nginx
Процесс установки приложения¶
Стек приложения состоит из Nginx и Certbot, устанавливаемых через системный менеджер пакетов. Версии устанавливаемых пакетов являются последними доступными в репозиториях Debian или Ubuntu на момент установки.
-
Установка пакетов:
nginx,certbot,python3-certbot-nginx,openssl -
Включение и запуск сервиса
nginxсразу после установки -
Получение SSL-сертификатов с помощью Certbot в неинтерактивном режиме (non-interactive mode) с использованием RSA-ключа размером 4096 бит
Права доступа и безопасность¶
Безопасность управляется через владение файлами, права доступа и настройки межсетевого экрана:
-
Пользователи:
-
root: Владелец конфигурационных файлов и каталогов Let's Encrypt -
www-data: Владелец каталогов с веб-контентом (/var/www/html,/var/www/letsencrypt) -
Межсетевой экран: Убедитесь, что порты 80 (HTTP) и 443 (HTTPS) открыты для внешнего интернета
-
Ограничения: Стандартный сайт Nginx отключен для предотвращения конфликтов с пользовательской конфигурацией
-
Сертификаты: Сертификаты генерируются с размером RSA-ключа 4096 бит и хранятся с ограниченными правами доступа
Настройки прав доступа¶
Права доступа к файлам и каталогам устанавливаются следующим образом для обеспечения безопасной работы:
-
/var/www/html: Режим0755, Владелецwww-data:www-data -
/var/www/letsencrypt: Режим0755, Владелецwww-data:www-data -
/etc/nginx/sites-available/<fqdn>.conf: Режим0644, Владелецroot:root -
/etc/nginx/user_conf.d: Режим0755, Владелецroot:root -
/etc/letsencrypt/renewal-hooks/deploy/reload-nginx.sh: Режим0755, Владелецroot:root
Прокси-серверы¶
Nginx функционирует как основной обратный прокси и веб-сервер для этого развертывания:
-
Протокол: HTTP (Порт 80) автоматически перенаправляется на HTTPS (Порт 443)
-
SSL/TLS: Управляется Certbot с использованием Let's Encrypt; сертификаты обновляются автоматически
-
Конфигурация:
-
Порт 80 обрабатывает вызов ACME и перенаправляет трафик на HTTPS
-
Порт 443 обслуживает HTTPS-трафик с поддержкой HTTP/2
-
В конфигурацию включены параметры Диффи-Хеллмана (
/etc/letsencrypt/dhparams/dhparam.pem) для усиления безопасности -
Пользовательские домены: Конфигурация настроена для зоны
hostkey.inс использованием префикса ID сервера -
Обновление сертификатов: Скрипт развертывания (deploy hook,
/etc/letsencrypt/renewal-hooks/deploy/reload-nginx.sh) автоматически перезагружает Nginx после обновления сертификата
Расположение файлов конфигурации и данных¶
Критические файлы конфигурации и данные находятся по следующим путям:
-
/etc/nginx/sites-available/<fqdn>.conf: Активная конфигурация сайта Nginx -
/etc/letsencrypt/live/<fqdn>/: Активные файлы SSL-сертификатов -
/etc/letsencrypt/renewal-hooks/deploy/reload-nginx.sh: Скрипт перезагрузки при обновлении сертификата -
/var/www/html: Корневая директория документов по умолчанию -
/var/www/letsencrypt: Каталог для вызовов ACME
Доступные порты для подключения¶
Приложение использует следующие порты:
| Порт | Протокол | Описание |
|---|---|---|
| 80 | TCP | HTTP (Вызов ACME и перенаправление на HTTPS) |
| 443 | TCP | HTTPS (Защищенный веб-трафик) |
Запуск, остановка и обновление¶
Управление сервисом осуществляется через systemd. Для управления сервисом Nginx используются следующие команды:
-
Запуск сервиса:
systemctl start nginx -
Остановка сервиса:
systemctl stop nginx -
Перезапуск сервиса:
systemctl restart nginx -
Перезагрузка конфигурации:
systemctl reload nginx -
Включение при загрузке:
systemctl enable nginx -
Проверка статуса:
systemctl status nginx
Внесение изменений в конфигурацию требует этапа проверки с помощью команды nginx -t, за которым следует перезагрузка для применения изменений.