Гид по технологиям

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

5 min read Веб-сервер Обновлено 06 Dec 2025
Установка Nginx на Ubuntu — быстрый гид
Установка Nginx на Ubuntu — быстрый гид

инженеры настраивают сервер Nginx

Веб‑приложения продолжают набирать популярность. Умение установить и настроить веб‑сервер нужно как разработчику, так и инженеру по эксплуатации. Веб‑сервер отвечает за доставку контента клиентам по сети. В этой статье показано, как установить 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

вывод статуса службы Nginx

Если служба не запущена, стартуйте её:

sudo systemctl start nginx

Перезагрузка службы после изменения конфигурации:

sudo systemctl restart nginx

Автозапуск при старте системы:

sudo systemctl enable nginx

Nginx в действии: директории и виртуальные хосты

По умолчанию статические файлы сервера лежат в:

  • /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 перед ним как обратный прокси для постепенной миграции.

Методология развёртывания в продакшн (мини‑план)

  1. Подготовьте staging с теми же конфигурациями.
  2. Применяйте конфиг в staging и выполняйте тесты (curl, нагрузочное тестирование на пике).
  3. Выполните canary‑деплой: откройте N% трафика на новый сервер или блок.
  4. Мониторьте логи и SLI (ошибки, latency).
  5. Раскатайте на всю инфраструктуру и документируйте 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 и постепенно добавляйте правила безопасности и мониторинг.

стандартная страница, отдаваемая Nginx

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

RDP: полный гид по настройке и безопасности
Инфраструктура

RDP: полный гид по настройке и безопасности

Android как клавиатура и трекпад для Windows
Гайды

Android как клавиатура и трекпад для Windows

Советы и приёмы для работы с PDF
Документы

Советы и приёмы для работы с PDF

Calibration в Lightroom Classic: как и когда использовать
Фото

Calibration в Lightroom Classic: как и когда использовать

Отключить Siri Suggestions на iPhone
iOS

Отключить Siri Suggestions на iPhone

Рисование таблиц в Microsoft Word — руководство
Office

Рисование таблиц в Microsoft Word — руководство