Перейти к содержанию

Обзор развертывания 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.

Для проверки корректности конфигурации используется команда:

nginx -t

Для перезагрузки конфигурации без остановки сервиса используется команда:

systemctl reload nginx

Для остановки сервиса:

systemctl stop nginx

Для запуска сервиса:

systemctl start nginx

Для проверки статуса сервиса:

systemctl status nginx

question_mark
Я могу вам чем-то помочь?
question_mark
ИИ Помощник ×