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

Что понадобится
- VPS mHost на Ubuntu 22.04/24.04, Debian 11/12 или AlmaLinux/Rocky Linux 8/9.
- Доступ по SSH под root или пользователем с sudo.
- Домен, направленный на IP-адрес сервера. Для проверки подойдёт и просто IP —
server_nameможно будет поменять позже.
Шаг 1. Установите Nginx
Ubuntu / Debian
apt update
apt install nginxAlmaLinux / Rocky Linux
dnf install nginxПакет nginx уже есть в стандартном репозитории (AppStream) — подключать сторонние репозитории не требуется.
Проверьте, что пакет установился:
nginx -vШаг 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 mHost.</p>
</body>
</html>
EOFШаг 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/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, уже активно.
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 целиком.
Проверьте, что именно ваш сайт теперь отвечает по имени:
curl -I -H "Host: example.com" http://127.0.0.1/Шаг 6. Откройте порты 80 и 443 в файрволе
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. Чтобы включить HTTPS, настройте сертификат Let's Encrypt через Certbot — это отдельная тема. Если вместо статического сайта нужен PHP-бэкенд с базой данных, посмотрите рецепт LEMP в статье «Готовые рецепты VMmanager 6» — он поднимает Nginx, MySQL и PHP одним запуском.