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

Установка и настройка 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
Автор
Редакция

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

Как устроить идеальную вечеринку для просмотра ТВ
Развлечения

Как устроить идеальную вечеринку для просмотра ТВ

Как распаковать несколько RAR‑файлов сразу
Инструменты

Как распаковать несколько RAR‑файлов сразу

Приватный просмотр в Linux: как и зачем
Приватность

Приватный просмотр в Linux: как и зачем

Windows 11 не видит iPod — способы исправить
Руководство

Windows 11 не видит iPod — способы исправить

PS5: как настроить игровые пресеты
Консоли

PS5: как настроить игровые пресеты

Как переключить камеру в Omegle на iPhone и Android
Руководство

Как переключить камеру в Omegle на iPhone и Android