Обзор развертывания Nginx с Certbot на сервере¶
Предпосылки и предварительные требования¶
Для корректной работы системы необходимо наличие сервера с операционной системой Debian или Ubuntu. Требуется наличие прав суперпользователя (root) или доступа через sudo.
Необходимо заранее определить следующие параметры: - Полное доменное имя (fqdn), на которое будет настроен сервер. - Адрес электронной почты для уведомлений от Let's Encrypt (certbot_email).
Сервер должен иметь доступ к интернету для загрузки пакетов и получения сертификатов. Открытыми должны быть порты 80 (HTTP) и 443 (HTTPS) для внешнего доступа.
Структура файлов и каталогов¶
Система использует следующие стандартные и пользовательские директории:
/etc/nginx/— основная директория конфигурации веб-сервера./etc/nginx/sites-available/— хранит конфигурационные файлы серверов, включая файл{{ fqdn }}.conf./etc/nginx/sites-enabled/— содержит символические ссылки на активные конфигурации изsites-available./etc/nginx/user_conf.d/— директория для дополнительных пользовательских конфигурационных файлов, подключаемых через директивуinclude./var/www/html— корневая директория для веб-контента./var/www/letsencrypt— корневая директория для проверки владения доменом (webroot) при получении сертификатов./etc/letsencrypt/— директория для хранения сертификатов, ключей и конфигурации Let's Encrypt./etc/letsencrypt/live/{{ fqdn }}/— расположение действующих сертификатов (fullchain.pem,privkey.pem,chain.pem)./etc/letsencrypt/dhparams/— расположение параметров Diffie-Hellman (dhparam.pem)./etc/letsencrypt/renewal-hooks/deploy/— скрипты, выполняемые после обновления сертификатов.
Процесс установки приложения¶
Установка выполняется через пакетный менеджер apt. Устанавливаются следующие пакеты: - nginx - certbot - python3-certbot-nginx - openssl
После установки пакетов сервис nginx автоматически включается в автозагрузку и запускается.
Прокси серверы¶
Веб-сервер Nginx настроен для обработки трафика по протоколам HTTP и HTTPS.
Настройка HTTP (порт 80)¶
Конфигурация на порту 80 выполняет две функции: 1. Обслуживает запросы к директории /.well-known/acme-challenge/ для проверки владения доменом сервисом Let's Encrypt. Корневая директория для этого пути установлена на /var/www/letsencrypt. 2. Перенаправляет весь остальной трафик на HTTPS (код ответа 301) или отображает заглушку в зависимости от этапа настройки.
Настройка HTTPS (порт 443)¶
Конфигурация на порту 443 включает поддержку SSL и HTTP/2. - Сертификат загружается из пути /etc/letsencrypt/live/{{ fqdn }}/fullchain.pem. - Ключ сертификата загружается из пути /etc/letsencrypt/live/{{ fqdn }}/privkey.pem. - Доверенный сертификат загружается из пути /etc/letsencrypt/live/{{ fqdn }}/chain.pem. - Параметры Diffie-Hellman загружаются из /etc/letsencrypt/dhparams/dhparam.pem. - Подключаются дополнительные конфигурационные файлы из директории /etc/nginx/user_conf.d/ с помощью директивы include.
Получение сертификатов¶
Сертификаты выдаются и обновляются с помощью утилиты certbot в режиме webroot. Команда для получения сертификата:
certbot certonly --webroot -w /var/www/letsencrypt -d {{ fqdn }} --email {{ certbot_email }} --rsa-key-size 4096 --agree-tos --no-eff-email --non-interactive
После успешного обновления сертификата автоматически выполняется скрипт /etc/letsencrypt/renewal-hooks/deploy/reload-nginx.sh, который перезагружает конфигурацию Nginx.
Права доступа и безопасность¶
Права на файлы и директории настроены следующим образом: - Директории /var/www/html и /var/www/letsencrypt принадлежат пользователю www-data и группе www-data с правами 0755. - Конфигурационные файлы в /etc/nginx/sites-available/ и /etc/nginx/user_conf.d/ принадлежат пользователю root и группе root с правами 0644. - Скрипт обновления в /etc/letsencrypt/renewal-hooks/deploy/reload-nginx.sh имеет права 0755.
По умолчанию стандартный сайт Nginx (/etc/nginx/sites-enabled/default) удаляется, чтобы избежать конфликтов портов.
Запуск, остановка и обновление¶
Управление сервисом nginx осуществляется через системный менеджер systemd.
Для проверки корректности конфигурации используется команда:
Для перезагрузки конфигурации без остановки сервиса используется команда:
Для остановки сервиса:
Для запуска сервиса:
Для проверки статуса сервиса: