Nginx — высокопроизводительный веб-сервер с открытым исходным кодом, который обслуживает миллионы сайтов по всему миру. Помимо роли веб-сервера, он отлично справляется с задачами обратного прокси и балансировщика нагрузки, при этом потребляя минимум системных ресурсов.
В этом руководстве мы пройдём весь путь от чистой системы Ubuntu 22.04 и выше до полностью настроенного Nginx: установим сервер, откроем нужные порты в брандмауэре, разберём команды управления службой и настроим серверные блоки для одновременного хостинга нескольких доменов.
Содержание
- Предварительные требования
- Шаг 1. Установка Nginx
- Шаг 2. Настройка брандмауэра
- Шаг 3. Проверка работы веб-сервера
- Шаг 4. Управление службой Nginx
- Шаг 5. Настройка серверных блоков
- Шаг 6. Важные файлы и директории
Предварительные требования
Для работы по этому руководству вам понадобится сервер с 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 и выделенные серверы с круглосуточной поддержкой и понятными тарифами.
Оставьте заявку — и ваш сервер будет готов уже сегодня!