Главная / Блог / Хостинг / Как установить Nginx на Ubuntu: подробный гайд для профи
ХОСТИНГ

Как установить Nginx на Ubuntu: подробный гайд для профи

Пошаговая инструкция по установке и настройке Nginx на Ubuntu. Настройка виртуальных хостов, оптимизация производительности и безопасность вашего сервера.

TL;DR
Пошаговая инструкция по установке и настройке Nginx на Ubuntu. Настройка виртуальных хостов, оптимизация производительности и безопасность вашего сервера.
SJ
slipjar.app
27 мая 2026 8 мин чтения 41 просмотров
Как установить Nginx на Ubuntu: подробный гайд для профи

Коротко о главном:

  • Установка выполняется одной командой: sudo apt update && sudo apt install nginx.
  • Для работы внешних подключений необходимо открыть порты 80 и 443 в брандмауэре UFW.
  • Основная конфигурация хранится в /etc/nginx/nginx.conf, а настройки сайтов — в /etc/nginx/sites-available/.
  • Всегда проверяйте синтаксис перед перезагрузкой командой nginx -t.

Чтобы установить Nginx на Ubuntu, обновите индекс пакетов и выполните команду sudo apt install nginx. После завершения процесса система автоматически запустит сервис, который начнет прослушивать 80-й порт. Это решение идеально подходит для хостинга высоконагруженных сайтов, реверс-проксирования и балансировки нагрузки благодаря событийно-ориентированной архитектуре.

Подготовка системы и установка Nginx на Ubuntu

Перед тем как внедрять Nginx в рабочую среду, важно убедиться, что операционная система находится в актуальном состоянии. Nginx доступен в стандартных репозиториях Ubuntu, что гарантирует стабильность и совместимость с системными библиотеками. Я рекомендую использовать версии LTS (Long Term Support), такие как Ubuntu 22.04 или 24.04, для обеспечения долгосрочной безопасности.

Первым делом обновляем списки пакетов, чтобы менеджер APT видел последние доступные версии:

sudo apt update
sudo apt upgrade -y

Теперь переходим непосредственно к установке. Пакет nginx подтянет все необходимые зависимости, включая библиотеки для работы с SSL и сжатием данных:

sudo apt install nginx -y

После завершения установки Nginx автоматически создаст службу в systemd. Проверить работоспособность можно командой systemctl status nginx. Если вы видите активный статус "active (running)", значит, сервер готов к работе. На этом этапе сервер уже отдает стандартную заглушку Ubuntu, которую можно увидеть, введя IP-адрес сервера в браузере.

Важный нюанс: Если вы планируете использовать сервер для сложных задач, таких как стриминг или работа с криптовалютными нодами, лучше заранее выбрать надёжный VPS-хостинг с высокой пропускной способностью сети, чтобы избежать задержек на уровне инфраструктуры.

Настройка брандмауэра UFW

В Ubuntu по умолчанию используется брандмауэр UFW. Если он включен, внешние пользователи не смогут достучаться до вашего сайта. Nginx регистрирует свои профили в UFW при установке, что упрощает настройку.

Посмотрите список доступных профилей:

sudo ufw app list

Вы увидите три варианта:

  • Nginx Full: открывает порты 80 (HTTP) и 443 (HTTPS).
  • Nginx HTTP: открывает только порт 80.
  • Nginx HTTPS: открывает только порт 443.

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

sudo ufw allow 'Nginx Full'

Управление процессом веб-сервера

Работа с Nginx требует понимания жизненного цикла его процессов. В отличие от Apache, Nginx крайне редко требует полной перезагрузки, что позволяет изменять конфигурацию без разрыва текущих соединений пользователей.

Команда Действие Когда использовать
sudo systemctl stop nginx Полная остановка При проведении технических работ на сервере.
sudo systemctl start nginx Запуск сервиса После остановки или сбоя.
sudo systemctl restart nginx Перезапуск с разрывом сессий При критических изменениях в ядре настроек.
sudo systemctl reload nginx Мягкая перезагрузка После изменения конфигов сайтов (рекомендуется).
sudo systemctl disable nginx Отключение автозагрузки Если сервер используется временно.

Профессионалы всегда используют reload вместо restart. Это позволяет Nginx запустить новые рабочие процессы с обновленной конфигурацией, в то время как старые процессы плавно завершают обслуживание текущих клиентов. Это критично для проектов с аптаймом 99.9%.

Настройка виртуальных хостов (Server Blocks)

Использование одного дефолтного конфига для всех сайтов — плохая практика. В экосистеме Nginx для разделения проектов используются "Server Blocks", аналогичные виртуальным хостам в Apache. Это позволяет запускать десятки сайтов на одном IP-адресе с разными настройками SSL, кэширования и логирования.

Создание структуры каталогов

Допустим, наш домен — example.com. Создадим для него отдельную директорию в /var/www/:

sudo mkdir -p /var/www/example.com/html

Назначим права собственности текущему пользователю, чтобы иметь возможность загружать файлы через SFTP без постоянного использования sudo:

sudo chown -R $USER:$USER /var/www/example.com/html
sudo chmod -R 755 /var/www/example.com

Конфигурационный файл сайта

Вместо редактирования основного файла nginx.conf, создаем новый файл в директории sites-available. Это позволяет быстро отключать сайты, не удаляя их настройки.

sudo nano /etc/nginx/sites-available/example.com

Вставьте следующий базовый конфиг:

server {
    listen 80;
    listen [::]:80;

    root /var/www/example.com/html;
    index index.html index.htm;

    server_name example.com www.example.com;

    location / {
        try_files $uri $uri/ =404;
    }

    access_log /var/log/nginx/example.com.access.log;
    error_log /var/log/nginx/example.com.error.log;
}

Чтобы активировать этот конфиг, создайте символическую ссылку в директорию sites-enabled, которую Nginx считывает при запуске:

sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
Key Takeaway: Никогда не забывайте проверять конфиг командой sudo nginx -t. Одна пропущенная точка с запятой может "уронить" весь веб-сервер при перезагрузке, оставив все ваши сайты недоступными.

Оптимизация Nginx для высокой производительности

Nginx "из коробки" работает хорошо, но для серьезных нагрузок требуются правки в /etc/nginx/nginx.conf. Основные параметры, которые стоит пересмотреть, касаются использования ресурсов процессора и сетевых соединений.

Параметр worker_processes лучше всего установить в значение auto. Это позволит Nginx автоматически определить количество ядер процессора и запустить соответствующее число воркеров. Для проектов, где важна конфиденциальность и скорость, часто выбирают VPS-провайдер с крипто-оплатой, так как такие сервера обычно имеют более современное железо и меньше ограничений на дисковые операции.

Настройка сжатия Gzip

Включение Gzip позволяет уменьшить размер передаваемых данных на 60-80%, что критично для мобильных пользователей. Найдите секцию gzip и приведите ее к такому виду:

gzip on;
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

Уровень компрессии 6 — это "золотая середина". Значения 7-9 дают минимальный выигрыш в размере, но значительно сильнее нагружают CPU сервера.

Лимиты соединений

В секции events проверьте параметр worker_connections. По умолчанию он часто стоит на 768. Для среднего сервера с 2-4 ГБ ОЗУ можно смело ставить 1024 или 2048. Это определит, сколько одновременных соединений сможет обрабатывать каждый рабочий процесс.

Обеспечение безопасности через SSL (Let's Encrypt)

В 2024 году работа по HTTP без шифрования — это моветон и риск для SEO. Самый простой способ защитить Nginx на Ubuntu — использовать Certbot для получения бесплатных SSL-сертификатов от Let's Encrypt.

Установка Certbot и его плагина для Nginx:

sudo apt install certbot python3-certbot-nginx -y

Запуск процесса получения сертификата:

sudo certbot --nginx -d example.com -d www.example.com

Certbot автоматически изменит ваш файл конфигурации в sites-available, добавив необходимые пути к ключам и настроив автоматический редирект с HTTP на HTTPS. Сертификаты выдаются на 90 дней, но Certbot добавляет задачу в cron для их автоматического продления. Проверить статус автопродления можно командой sudo certbot renew --dry-run.

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

sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

И добавьте путь к этому файлу в настройки SSL вашего сервера для защиты от атак типа Logjam.

Nginx как Reverse Proxy для Node.js или Python

Часто Nginx используется не для отдачи статики, а как входная точка (Proxy) для приложений на Node.js, Python (Django/Flask) или Go. Это позволяет делегировать Nginx задачи по терминированию SSL, сжатию и кэшированию, оставляя приложению только бизнес-логику.

Пример проксирования запросов на локальный порт 3000:

location / {
    proxy_pass http://localhost:3000;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection 'upgrade';
    proxy_set_header Host $host;
    proxy_cache_bypass $http_upgrade;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

Заголовки X-Real-IP и X-Forwarded-For критически важны. Без них ваше приложение будет видеть IP-адрес 127.0.0.1 для всех входящих посетителей, что сделает невозможным нормальную аналитику или бан спамеров.

Логирование и отладка

Когда что-то идет не так, логи — ваш главный инструмент. В Ubuntu логи Nginx по умолчанию находятся в /var/log/nginx/.

  • access.log — фиксирует каждый запрос к серверу. Полезно для анализа трафика и поиска 404 ошибок.
  • error.log — содержит сообщения о сбоях, проблемах с правами доступа и ошибках в конфигурации.

Чтобы следить за логами в реальном времени, используйте команду tail:

sudo tail -f /var/log/nginx/error.log

Если вы видите ошибку "Worker process exited on signal 11", это обычно означает проблему с аппаратной памятью или специфическим модулем Nginx. В 90% случаев ошибки связаны с неправильными путями к файлам или отсутствием прав доступа (403 Forbidden). Всегда проверяйте, что у пользователя www-data есть доступ на чтение к вашим веб-директориям.

FAQ: Часто задаваемые вопросы

Как узнать, какая версия Nginx установлена?
Используйте команду nginx -v для краткой информации или nginx -V (заглавная V), чтобы увидеть все скомпилированные модули и параметры сборки. Это полезно, если вам нужно проверить поддержку HTTP/2 или Brotli.

Где находится главный конфигурационный файл?
Основной файл конфигурации расположен по адресу /etc/nginx/nginx.conf. Однако настройки конкретных сайтов следует искать в /etc/nginx/sites-available/.

Как полностью удалить Nginx с сервера?
Если вам нужно переустановить сервер с нуля, выполните sudo apt purge nginx nginx-common nginx-full. Команда purge удалит не только бинарные файлы, но и все конфигурационные файлы, что позволит избежать конфликтов при новой установке.

Почему изменения в конфиге не вступают в силу?
Скорее всего, вы забыли перезагрузить конфигурацию. Выполните sudo nginx -s reload. Также проверьте, создана ли символическая ссылка из sites-available в sites-enabled, так как Nginx игнорирует файлы, которых нет в папке enabled.

Установка Nginx на Ubuntu — это фундамент для создания быстрого и надежного веб-проекта. Правильное разделение конфигов, использование SSL и базовая оптимизация параметров воркеров позволят вашему серверу стабильно работать даже под серьезными нагрузками.

Автор

SJ

slipjar.app

Редакция

Команда slipjar.app пишет о хостинге, серверах и инфраструктуре.