Установка и настройка Nginx на Ubuntu

Веб‑приложения продолжают набирать популярность. Умение установить и настроить веб‑сервер нужно как разработчику, так и инженеру по эксплуатации. Веб‑сервер отвечает за доставку контента клиентам по сети. В этой статье показано, как установить Nginx на Ubuntu и сделать базовую настройку для разработки и продакшна.
Почему стоит выбрать Nginx
Nginx — лёгкий и производительный веб‑сервер, доступный на Linux и Windows. Его часто используют как обратный прокси и почтовый прокси. Nginx хорошо масштабируется, экономит ресурсы и широко поддерживается сообществом. Произношение: «engine x».
Коротко про роль обратного прокси: Nginx принимает клиентские запросы на порту и перенаправляет их в бэкенд‑приложение. Это даёт дополнительный уровень фильтрации и позволяет балансировать нагрузку.
Важно: Nginx запускается как системная служба и управляется через systemctl на Ubuntu.
Подготовка: что пригодится
Кратко перечисление задач перед установкой:
- Обновить список пакетов.
- Установить утилиты для безопасной загрузки (curl, gnupg2, ca‑certificates и т. п.).
- Импортировать официальный ключ подписи Nginx.
- Добавить репозиторий Nginx для получения стабильных пакетов.
- Проверить правила брандмауэра и SELinux/AppArmor по необходимости.
Шаг 1. Установка необходимых компонентов и репозитория
Сначала обновите список пакетов:
sudo apt updateУстановите инструменты для безопасной загрузки пакетов:
sudo apt install curl gnupg2 ca-certificates lsb-release ubuntu-keyringПолучите официальный ключ подписи Nginx и сохраните его в keyring:
curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/nullПроверьте импортированный ключ (вывод покажет отпечаток):
gpg --dry-run --quiet --import --import-options import-show /usr/share/keyrings/nginx-archive-keyring.gpgДолжен появиться отпечаток ключа. Это подтверждает подлинность.
Добавьте репозиторий Nginx для стабильных сборок (команда вставляет имя дистрибутива автоматически):
echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" | sudo tee /etc/apt/sources.list.d/nginx.listПосле этого снова обновите список пакетов до установки:
sudo apt updateПримечание: если вы предпочитаете пакеты из Ubuntu (а не nginx.org), пропустите добавление внешнего репозитория. Внешний репозиторий даёт более свежие релизы от команды Nginx.
Шаг 2. Установка Nginx
Установите пакет:
sudo apt install nginxПроверка статуса службы:
sudo systemctl status nginxЕсли служба не запущена, стартуйте её:
sudo systemctl start nginxПерезагрузка службы после изменения конфигурации:
sudo systemctl restart nginxАвтозапуск при старте системы:
sudo systemctl enable nginxNginx в действии: директории и виртуальные хосты
По умолчанию статические файлы сервера лежат в:
- /usr/share/nginx/html — стандартная папка с примером страницы.
- Конфигурация: /etc/nginx/nginx.conf
- Директории сайтов: /etc/nginx/conf.d/ и /etc/nginx/sites-available вместе с sites-enabled (в зависимости от дистрибутива)
Чтобы открыть стандартную страницу, перейдите в браузере на http://localhost:80. В контейнере или удалённо проверьте через curl:
curl -I http://localhostПример простого server block для виртуального хоста (создайте файл в /etc/nginx/conf.d/example.conf или sites-available):
server {
listen 80;
server_name example.com www.example.com;
root /var/www/example.com/html;
index index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
}После добавления конфигурации проверьте синтаксис и перезапустите Nginx:
sudo nginx -t
sudo systemctl reload nginxБазовая безопасность и жёсткие настройки
Ниже — практические меры для безопасной установки Nginx в продакшн:
- Ограничьте информацию о сервере: отключите server_tokens в nginx.conf.
- Настройте TLS (Let’s Encrypt/Certbot) для HTTPS и автоматического обновления сертификатов.
- Разрешите только нужные порты в брандмауэре (ufw):
sudo ufw allow 'Nginx Full'
sudo ufw enable- Установите rate limiting и limit_conn для защиты от DDoS и грубого перебора:
http {
limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s;
}
server {
location /login {
limit_req zone=one burst=20 nodelay;
}
}- Отключите ненужные модули и проверьте права на каталоги (/var/www — владелец www-data).
- Включите логирование ошибок и access_log с ротацией.
- При необходимости используйте AppArmor/SELinux профили на Ubuntu или контейнеры для изоляции.
Important: Нельзя полагаться только на Nginx для безопасности приложения — всегда применяйте многоуровневую защиту.
Обратный прокси: пример проксирования на бэкенд
Типичный блок для проксирования запросов на приложение (например, на порт 3000):
server {
listen 80;
server_name app.example.com;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}Такой шаблон часто используется при деплое Node.js/Go/Python‑приложений.
Тесты и критерии приёмки
Критерии приёмки для базовой установки:
- Команда curl к localhost возвращает HTTP 200 и корректную страницу.
- systemctl status nginx показывает Active: active (running).
- nginx -t проходит без ошибок.
- Фаервол разрешает 80/443 только при необходимости.
- HTTPS корректно установлен и сертификат не просрочен (при включённом TLS).
Примеры команд проверки:
curl -I http://localhost
sudo systemctl status nginx --no-pager
sudo nginx -tОтладка: частые проблемы и когда это не работает
- Конфликты портов: другой процесс уже слушает 80/443. Проверьте sudo ss -tulpn | grep :80.
- Неверная конфигурация: nginx -t покажет синтаксические ошибки.
- Проблемы DNS/server_name: запросы приходят на другой виртуальный хост.
- Брандмауэр блокирует входящие соединения.
Если Nginx не стартует, посмотрите логи ошибок:
sudo journalctl -u nginx --since "1 hour ago"
sudo tail -n 100 /var/log/nginx/error.logМиграция с Apache: отличия и подсказки
- Формат конфигурации другой: Apache использует .htaccess и модульную систему; в Nginx правила переписывания нужно переводить в синтаксис try_files и rewrite.
- Если у вас много правил mod_rewrite, протестируйте их пошагово в staging перед полным переносом.
- Параллельный запуск: можно держать Apache на другом порту и ставить Nginx перед ним как обратный прокси для постепенной миграции.
Методология развёртывания в продакшн (мини‑план)
- Подготовьте staging с теми же конфигурациями.
- Применяйте конфиг в staging и выполняйте тесты (curl, нагрузочное тестирование на пике).
- Выполните canary‑деплой: откройте N% трафика на новый сервер или блок.
- Мониторьте логи и SLI (ошибки, latency).
- Раскатайте на всю инфраструктуру и документируйте rollback‑план.
Ролевые контрольные списки
Системный администратор:
- Установить Nginx и ключи подписи.
- Настроить автозапуск и мониторинг службы.
- Настроить ротацию логов и бэкапы конфигов.
Разработчик:
- Создать server block для приложения.
- Проверить заголовки X‑Forwarded‑For и Host.
- Запустить интеграционные тесты через прокси.
Инженер по безопасности:
- Включить HTTPS и автоматическую выдачу сертификатов.
- Настроить rate limiting и ограничение размеров тела запросов.
- Проверить права на файлы и минимальные привилегии процесса.
Короткий глоссарий
- server block — конфигурационный блок Nginx для виртуального хоста.
- reverse proxy — промежуточный сервер, пересылающий запросы бэкенду.
- keyring — контейнер для GPG‑ключей, используемый apt для проверки подписи.
Короткое резюме
Вы установили Nginx, добавили официальный репозиторий и ключ, проверили службу и увидели, где хранятся файлы сайтов. Настроили базовый виртуальный хост и узнали ключевые шаги по безопасности. Для продакшна используйте HTTPS, современные политики безопасности и поэтапное развёртывание.
Important: Всегда тестируйте изменения в staging и имейте план отката перед обновлением продакшн‑окружения.
Спасибо за чтение — начните с простого server block и постепенно добавляйте правила безопасности и мониторинг.
Похожие материалы
Как устроить идеальную вечеринку для просмотра ТВ
Как распаковать несколько RAR‑файлов сразу
Приватный просмотр в Linux: как и зачем
Windows 11 не видит iPod — способы исправить
PS5: как настроить игровые пресеты