Nginx: установка и первый сайт
В этой статье вы поставите Nginx на VPS ForestsNet Cloud, включите его автозапуск через systemd, разместите простой статический сайт со своим server block (vhost) и откроете нужные порты в файрволе.

Что понадобится
- VPS ForestsNet Cloud на Ubuntu 22.04/24.04, Debian 11/12 или AlmaLinux/Rocky Linux 8/9.
- Доступ по SSH под root или пользователем с sudo.
- Домен, направленный на IP-адрес сервера. Для проверки подойдёт и просто IP —
server_nameможно будет поменять позже.
ℹ️ Совет: все команды ниже даны от имени root. Если вы работаете под обычным пользователем, добавляйте sudo перед каждой командой.
ℹ️ Совет: если помимо Nginx вам сразу нужны MySQL и PHP, проще взять готовый рецепт LEMP в VMmanager 6 (см. статью «Готовые рецепты VMmanager 6») — он разворачивает весь стек одним запуском. Ниже — установка и настройка именно Nginx вручную.
Шаг 1. Установите Nginx
Ubuntu / Debian
apt update
apt install nginxAlmaLinux / Rocky Linux
dnf install nginxПакет nginx уже есть в стандартном репозитории (AppStream) — подключать сторонние репозитории не требуется.
Проверьте, что пакет установился:
nginx -vℹ️ Совет: apt/dnf ставят версию Nginx из репозитория вашего дистрибутива — для обычного сайта её достаточно. Если нужна самая свежая mainline- или stable-версия от разработчиков Nginx, у них есть собственный apt/yum-репозиторий, см. nginx.org/en/linux_packages.html.
Шаг 2. Включите автозапуск и запустите Nginx через systemd
systemctl enable --now nginx
systemctl status nginxФлаг enable --now одновременно добавляет Nginx в автозагрузку и запускает его сразу. В статусе должно быть active (running).
Проверьте, что сервер отвечает — прямо на VPS, ещё до открытия портов в файрволе:
curl -I http://127.0.0.1/Ответ HTTP/1.1 200 OK и заголовок Server: nginx означают, что Nginx работает и отдаёт страницу по умолчанию.
Шаг 3. Разместите статический сайт
Создайте отдельную папку под сайт и положите в неё index.html:
mkdir -p /var/www/example.com/htmlcat > /var/www/example.com/html/index.html <<'EOF'
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<title>example.com</title>
</head>
<body>
<h1>Nginx работает!</h1>
<p>Это статический сайт, размещённый на VPS ForestsNet Cloud.</p>
</body>
</html>
EOFℹ️ Совет: воркеры Nginx работают не от root, а от отдельного пользователя — www-data на Ubuntu/Debian, nginx на AlmaLinux/Rocky. Файлы, созданные обычным способом (mkdir, cat, редактор), по умолчанию доступны на чтение всем, так что для /var/www дополнительный chown/chmod не нужен.
Шаг 4. Настройте server block (vhost)
Конфигурация одинаковая для обоих семейств дистрибутивов — отличается только путь до файла.
Ubuntu / Debian: sites-available и sites-enabled
cat > /etc/nginx/sites-available/example.com <<'EOF'
server {
listen 80;
listen [::]:80;
server_name example.com www.example.com;
root /var/www/example.com/html;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
EOFВключите сайт символической ссылкой в sites-enabled:
ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/ℹ️ Совет: по умолчанию там же включён сайт-заглушка default (/etc/nginx/sites-enabled/default). Он не мешает работе вашего сайта — Nginx выбирает блок по server_name, — но если хотите отключить заглушку совсем, удалите символическую ссылку: rm /etc/nginx/sites-enabled/default.
AlmaLinux / Rocky: conf.d
cat > /etc/nginx/conf.d/example.com.conf <<'EOF'
server {
listen 80;
listen [::]:80;
server_name example.com www.example.com;
root /var/www/example.com/html;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
EOFРасширение .conf обязательно — только такие файлы подключаются директивой include /etc/nginx/conf.d/*.conf; из /etc/nginx/nginx.conf. Отдельно включать сайт не нужно: всё, что лежит в conf.d, уже активно.
ℹ️ Совет: не указывайте у своего сайта default_server — этот флаг уже занят блоком по умолчанию из /etc/nginx/nginx.conf (там же root /usr/share/nginx/html), и Nginx откажется запускаться с ошибкой о дублирующемся default server. Ваш блок и так будет работать — Nginx выберет его по server_name.
ℹ️ Совет: если разместите файлы сайта не в /var/www и не в /usr/share/nginx/html, а в произвольном каталоге, из-за SELinux Nginx может вернуть 403 Forbidden. Пометьте каталог правильным контекстом (пакет policycoreutils-python-utils даёт команду semanage):
dnf install policycoreutils-python-utils
semanage fcontext -a -t httpd_sys_content_t "/srv/example.com(/.*)?"
restorecon -Rv /srv/example.comШаг 5. Проверьте конфигурацию и перезапустите Nginx
nginx -tОжидаемый вывод — syntax is ok и test is successful. Только после этого перечитайте конфигурацию:
systemctl reload nginxreload подхватывает изменения без разрыва уже установленных соединений — в отличие от restart, который перезапускает Nginx целиком.
⚠️ Важно: если nginx -t сообщил об ошибке — не выполняйте reload/restart, пока не исправите её. Nginx укажет конкретный файл и номер строки с проблемой.
Проверьте, что именно ваш сайт теперь отвечает по имени:
curl -I -H "Host: example.com" http://127.0.0.1/Шаг 6. Откройте порты 80 и 443 в файрволе
⚠️ Важно: порты 80 и 443 нужно открыть в файрволе, иначе сайт не будет доступен снаружи. Если ufw на сервере ещё не настроен, сначала пройдите статью «Настройка файрвола UFW» — она ставит ufw, разрешает SSH (это обязательно сделать первым, иначе потеряете доступ к серверу) и включает файрвол. Если ufw уже работает, просто добавьте правила для веб-сервера:
Ubuntu / Debian (ufw)
apt install ufw
ufw allow 80/tcp
ufw allow 443/tcpAlmaLinux / Rocky (firewalld)
На этих дистрибутивах по умолчанию используется не ufw, а firewalld — обычно он уже установлен и запущен (проверить: systemctl status firewalld):
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reload✅ Готово: откройте в браузере http://example.com (или IP-адрес сервера) — должна открыться страница «Nginx работает!» из шага 3.
Что дальше
Сайт пока доступен только по HTTP. Чтобы включить HTTPS, настройте сертификат Let's Encrypt через Certbot — это отдельная тема. Если вместо статического сайта нужен PHP-бэкенд с базой данных, посмотрите рецепт LEMP в статье «Готовые рецепты VMmanager 6» — он поднимает Nginx, MySQL и PHP одним запуском.