Пошаговое руководство: установка Nginx на Debian 12, управление через systemd, виртуальный хост и HTTPS с Let’s Encrypt. Для клиентов Boxis и системных администраторов.
Установка и настройка Nginx на Debian 12 (Bookworm)
Обновлено: март 2026
Время чтения: ~12 минут
Аудитория: системные администраторы и опытные пользователи серверов Debian 12.
Nginx — высокопроизводительный HTTP-сервер и обратный прокси. В Debian 12 (Bookworm) он хорошо сочетается с systemd и подходит для работы перед PHP, Node.js или upstream API. В этом руководстве — чистая установка, базовые рекомендации по безопасности, минимальный виртуальный хост и при необходимости TLS с Let’s Encrypt.
Что вы получите
- Установленный из репозиториев Debian Nginx и проверенный сервис.
- Открытые порты HTTP/HTTPS (пример с UFW).
- Отдельный корень сайта и собственный блок
server. - Опционально: сертификат Let’s Encrypt и автоматическое продление.
Предварительные требования
- Сервер Debian 12 с доступом по SSH.
- Учётная запись с правами
sudo(не рекомендуется постоянно работать подroot). - DNS-имя (например,
app.example.com), указывающее на публичный IP, если нужны HTTPS и автообновление сертификата. - Базовые навыки работы в консоли.
Примечание Boxis: на управляемом хостинге Boxis изменения на уровне сервера могут быть ограничены; перед правками веб-стека в общих средах обратитесь в поддержку.
1. Обновление индекса пакетов и установка Nginx
sudo apt update
sudo apt install -y nginx
Debian поставляет проверенную сборку Nginx; сторонние репозитории нужны только при необходимости специфических модулей.
2. Межсетевой экран: HTTP и HTTPS (UFW)
Если включён UFW:
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw reload
sudo ufw status
При использовании nftables или облачных групп безопасности откройте TCP 80 и TCP 443 там.
3. Управление Nginx через systemd
| Действие | Команда |
|---|---|
| Автозапуск | sudo systemctl enable nginx |
| Запуск | sudo systemctl start nginx |
| Статус | sudo systemctl status nginx |
| Перезагрузка конфигурации | sudo systemctl reload nginx |
| Проверка синтаксиса | sudo nginx -t |
После правок конфигурации всегда выполняйте nginx -t перед перезагрузкой.
4. Расположение конфигурации в Debian
Обычная схема:
- Основной файл:
/etc/nginx/nginx.conf - Сайты:
/etc/nginx/sites-available/(ссылки вsites-enabled/) - Дополнительно:
/etc/nginx/conf.d/*.conf
Предпочтительно использовать sites-available / sites-enabled, чтобы включать и отключать сайты без удаления файлов.
5. Виртуальный хост (блок server)
Пример: хост app.example.com, файлы в /var/www/app.example.com/html.
5.1 Каталоги и тестовая страница
sudo mkdir -p /var/www/app.example.com/html
echo '<!DOCTYPE html><html><head><meta charset="utf-8"><title>OK</title></head><body><h1>It works</h1></body></html>' | sudo tee /var/www/app.example.com/html/index.html
sudo chown -R www-data:www-data /var/www/app.example.com
5.2 Файл конфигурации
Создайте /etc/nginx/sites-available/app.example.com.conf:
server {
listen 80;
listen [::]:80;
server_name app.example.com;
root /var/www/app.example.com/html;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
Включите сайт:
sudo ln -sf /etc/nginx/sites-available/app.example.com.conf /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
Проверьте в браузере или командой curl -I http://app.example.com.
6. HTTPS с Let’s Encrypt
sudo apt install -y certbot python3-certbot-nginx
Получение сертификата (укажите свой e-mail и домен):
sudo certbot --nginx -d app.example.com -m vy@example.com --agree-tos --non-interactive
Проверка продления:
sudo certbot renew --dry-run
Обычно продление выполняет таймер systemd или cron; проверьте systemctl list-timers | grep certbot.
7. Рекомендации по эксплуатации
- После изменения конфигурации предпочитайте
reload, а не полныйrestart, если это возможно. - При высокой нагрузке ведите отдельные логи для сайтов (
access_log/error_log). server_tokens off;, если политика безопасности позволяет.- Для PHP и приложений: согласованный
fastcgi_passк PHP-FPM илиproxy_passк upstream. - Резервное копирование каталога
/etc/nginx/перед крупными изменениями.
8. Краткая диагностика
| Симптом | Что проверить |
|---|---|
502 Bad Gateway |
Недоступен backend; неверный proxy_pass / fastcgi_pass. |
403 Forbidden |
Права на каталоги; путь root; SELinux/AppArmor. |
| Конфигурация не применяется | sudo nginx -t и исправление указанных строк. |
| Ошибка продления сертификата | DNS по-прежнему указывает на этот сервер; порт 80 доступен для HTTP-01. |
9. Итог
Вы установили Nginx на Debian 12, открыли веб-порты, создали виртуальный хост и при необходимости включили HTTPS с помощью Certbot. В продакшене дополнительно настройте логирование, ограничение запросов и мониторинг upstream-сервисов.
Связанные темы
- Поиск в базе знаний Boxis:
/{lang}/knowledgebase/search/ - Хостинг и DNS: категория Хостинг и домены, когда доступна.
Общее руководство; команды могут отличаться в зависимости от образа системы и настроек.