Как установить Nginx на Ubuntu

Nginx — высокопроизводительный веб-сервер с открытым исходным кодом, который обслуживает миллионы сайтов по всему миру. Помимо роли веб-сервера, он отлично справляется с задачами обратного прокси и балансировщика нагрузки, при этом потребляя минимум системных ресурсов.

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

Содержание

Предварительные требования

Для работы по этому руководству вам понадобится сервер с Ubuntu 22.04 и выше, на котором создан обычный пользователь с привилегиями sudo. Войдите в систему под этим пользователем — и можно начинать.

Шаг 1. Установка Nginx

Nginx входит в стандартные репозитории Ubuntu, поэтому установка занимает буквально пару команд. Сначала обновите индекс пакетов, чтобы работать с актуальными версиями:

sudo apt update

Затем установите Nginx:

sudo apt install nginx

Менеджер пакетов сам подтянет все необходимые зависимости. После завершения установки сервер готов к первоначальной настройке.

Шаг 2. Настройка брандмауэра

После установки Nginx автоматически регистрируется в UFW как именованный профиль. Посмотрите, какие профили доступны:

sudo ufw app list
Output
Available applications:
  Nginx Full
  Nginx HTTP
  Nginx HTTPS
  OpenSSH

В списке три профиля Nginx: Nginx Full открывает одновременно порты 80 и 443, Nginx HTTP — только порт 80, Nginx HTTPS — только порт 443. Принцип хорошей практики — разрешать минимально необходимый трафик. На этом этапе нам нужен только HTTP:

sudo ufw allow 'Nginx HTTP'

Проверьте результат:

sudo ufw status
Output
Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere                  
Nginx HTTP                 ALLOW       Anywhere                  
OpenSSH (v6)               ALLOW       Anywhere (v6)             
Nginx HTTP (v6)            ALLOW       Anywhere (v6)

Трафик на порт 80 разрешён. Переходим к проверке самого сервера.

Шаг 3. Проверка работы веб-сервера

Ubuntu автоматически запускает Nginx сразу после установки. Убедитесь, что служба работает:

systemctl status nginx
Output
● nginx.service - A high performance web server and a reverse proxy server
   Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
   Active: active (running) since Fri 2020-04-20 16:08:19 UTC; 3 days ago
     Docs: man:nginx(8)
 Main PID: 2369 (nginx)
    Tasks: 2 (limit: 1153)
   Memory: 3.5M
   CGroup: /system.slice/nginx.service
           ├─2369 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
           └─2380 nginx: worker process

Статус active (running) говорит о том, что всё в порядке. Для финальной проверки откройте страницу по IP-адресу сервера в браузере. Если не знаете IP — выполните:

curl -4 icanhazip.com

Введите полученный адрес в браузере:

http://your_server_ip

Если вы видите приветственную страницу Nginx — сервер установлен и работает корректно.

Шаг 4. Управление службой Nginx

Для повседневной работы вам понадобятся несколько базовых команд systemctl. Остановить сервер:

sudo systemctl stop nginx

Запустить остановленный сервер:

sudo systemctl start nginx

Перезапустить (с кратким разрывом соединений):

sudo systemctl restart nginx

Применить изменения конфигурации без прерывания активных соединений:

sudo systemctl reload nginx

Отключить автозапуск при загрузке системы:

sudo systemctl disable nginx

Снова включить автозапуск:

sudo systemctl enable nginx

Теперь, когда вы умеете управлять службой, настроим хостинг нескольких доменов на одном сервере.

Шаг 5. Настройка серверных блоков

Серверные блоки в Nginx — аналог виртуальных хостов в Apache. Они позволяют обслуживать несколько сайтов на одной машине, изолируя конфигурацию каждого домена. По умолчанию Nginx раздаёт файлы из /var/www/html, но для нескольких сайтов лучше создать отдельную структуру директорий.

Создайте директорию для вашего домена (замените your_domain на своё доменное имя):

sudo mkdir -p /var/www/your_domain/html

Назначьте владельца:

sudo chown -R $USER:$USER /var/www/your_domain/html

Установите права доступа:

sudo chmod -R 755 /var/www/your_domain

Создайте тестовую страницу:

nano /var/www/your_domain/html/index.html

Вставьте простой HTML-код:

/var/www/your_domain/html/index.html
<html>
    <head>
        <title>Welcome to your_domain!</title>
    </head>
    <body>
        <h1>Success!  The your_domain server block is working!</h1>
    </body>
</html>

Сохраните файл: Ctrl+X, затем Y и Enter. Теперь создайте конфигурационный файл серверного блока:

sudo nano /etc/nginx/sites-available/your_domain

Добавьте следующую конфигурацию:

/etc/nginx/sites-available/your_domain
server {
        listen 80;
        listen [::]:80;

        root /var/www/your_domain/html;
        index index.html index.htm index.nginx-debian.html;

        server_name your_domain www.your_domain;

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

Активируйте блок, создав символическую ссылку в директории sites-enabled:

sudo ln -s /etc/nginx/sites-available/your_domain /etc/nginx/sites-enabled/

Чтобы избежать проблем с хэшированием при большом количестве доменов, откройте основной конфигурационный файл:

sudo nano /etc/nginx/nginx.conf

Найдите строку server_names_hash_bucket_size и раскомментируйте её, убрав символ #:

/etc/nginx/nginx.conf
...
http {
    ...
    server_names_hash_bucket_size 64;
    ...
}
...

Сохраните файл и проверьте синтаксис конфигурации:

sudo nginx -t

Если ошибок нет, перезапустите Nginx:

sudo systemctl restart nginx

Откройте http://your_domain в браузере — вы должны увидеть созданную тестовую страницу.

Шаг 6. Важные файлы и директории

Теперь стоит познакомиться со структурой Nginx, чтобы в дальнейшем легко ориентироваться в конфигурации.

Директории с контентом: основная директория для веб-файлов — /var/www/html. Она используется как резервная, если ни один серверный блок не совпал с запросом клиента.

Конфигурация сервера: все файлы настроек хранятся в /etc/nginx. Главный файл — /etc/nginx/nginx.conf, он отвечает за глобальные параметры. Конфигурации отдельных сайтов создаются в /etc/nginx/sites-available/ и активируются через символические ссылки в /etc/nginx/sites-enabled/. В директории /etc/nginx/snippets удобно хранить повторно используемые фрагменты конфигурации.

Журналы: все входящие запросы фиксируются в /var/log/nginx/access.log, ошибки — в /var/log/nginx/error.log. Именно сюда нужно заглядывать в первую очередь при диагностике проблем.

Рекомендуем также изучить наше руководство «Как защитить Nginx с помощью Let’s Encrypt на Ubuntu».

Заключение

Мы прошли полный цикл: установили Nginx на Ubuntu, настроили брандмауэр, разобрались с командами управления службой и настроили серверные блоки для хостинга нескольких доменов. Теперь у вас есть работающий веб-сервер и базовое понимание его структуры — достаточно, чтобы уверенно двигаться дальше.

Надёжная площадка для вашего сервера

Хотите запустить Nginx на стабильном хостинге? Мы предлагаем производительные VPS и выделенные серверы с круглосуточной поддержкой и понятными тарифами.

Оставьте заявку — и ваш сервер будет готов уже сегодня!

Для реализации основных услуг и функций нашего сайта, а также для сбора данных о том, как посетители взаимодействуют с нашими сайтом, продуктами и услугами, мы применяем различные инструменты, включая файлы cookie. Нажимая «Принимаю», вы соглашаетесь с текущими правилами и условиями использования сайта и даете разрешение на использование этих данных. В противном случае, пожалуйста, покиньте сайт.

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: