Установка Nginx на Ubuntu 22.04: настройка и SSL

Честно, Nginx — это прям швейцарский нож в мире веб-серверов. Я его ставил на VPS, на локалку, на продакшн и даже на Raspberry Pi. Почему? Потому что он быстрый, простой, жрёт мало ресурсов и конфигурируется почти как хочешь. Если тебе нужно поднять сайт, проксировать запросы, раздавать статику или просто поиграться с SSL — Nginx практически всегда первый выбор. Особенно на свежей Ubuntu 22.04.

Возможности

  • Обработка большого количества одновременных соединений (даже на слабом железе)
  • Обратный прокси, балансировка нагрузки, кеширование
  • Лёгкая настройка SSL (в том числе с автоматизацией через Let’s Encrypt)
  • Гибкая система конфигов: хочешь — настраивай всё в одном файле, хочешь — разбивай на сотню
  • Работает почти на любой ОС, но Ubuntu 22.04 — это прям золотой стандарт

Что требуется

  • Сервер или VPS с Ubuntu 22.04 (желательно свежий, но и апдейтнутый подойдёт)
  • Доступ по SSH с правами sudo
  • Доменное имя (если хочешь настраивать SSL)
  • Минимум 512 МБ RAM (но чем больше, тем веселее)
  • Свободный порт 80 (HTTP) и 443 (HTTPS)

Установка — пошаговая инструкция

  1. Обнови систему:
    sudo apt update && sudo apt upgrade -y
  2. Установи Nginx:
    sudo apt install nginx -y
    Он сразу подтянет все зависимости и запустится как сервис.
  3. Проверь статус:
    systemctl status nginx
    Должно быть что-то вроде active (running).
  4. Открой порты в firewall (если ufw включён):
    sudo ufw allow 'Nginx Full'
    sudo ufw reload
  5. Проверь, что всё работает:
    Открой в браузере http://<твой_сервер> — увидишь стартовую страницу Nginx.
  6. Настрой свой сайт:
    Кидай свои файлы в /var/www/html (или создай свою директорию и настрой server block).
  7. Добавь свой конфиг:
    
    sudo nano /etc/nginx/sites-available/myproject
        

    Пример простого server block:

    
    server {
        listen 80;
        server_name example.com www.example.com;
    
        root /var/www/myproject;
        index index.html index.htm;
    
        location / {
            try_files $uri $uri/ =404;
        }
    }
        

    Активируй сайт:
    sudo ln -s /etc/nginx/sites-available/myproject /etc/nginx/sites-enabled/

  8. Проверь конфиг:
    sudo nginx -t
  9. Перезапусти Nginx:
    sudo systemctl reload nginx
  10. Настрой SSL (Let’s Encrypt):
    sudo apt install certbot python3-certbot-nginx -y
    sudo certbot --nginx -d example.com -d www.example.com
    Следуй инструкциям в терминале. Сертификат подтянется, конфиг обновится.
  11. Проверь SSL:
    sudo nginx -t
    sudo systemctl reload nginx

Использование: команды и варианты

  • sudo systemctl start|stop|restart|reload nginx — управление сервисом
  • sudo nginx -t — проверка синтаксиса конфигов
  • sudo tail -f /var/log/nginx/access.log — лог запросов
  • sudo tail -f /var/log/nginx/error.log — лог ошибок
  • sudo certbot renew --dry-run — тест автоматического продления SSL
  • Конфиги сайтов — /etc/nginx/sites-available/
  • Активные сайты — /etc/nginx/sites-enabled/
  • Главный конфиг — /etc/nginx/nginx.conf
  • Папка с файлами сайта — /var/www/<имя_проекта>/

Ошибки, как делать не надо

  • Не трогай /etc/nginx/nginx.conf без необходимости — все сайты лучше в sites-available
  • Не ставь права 777 на папки сайта — будет больно, если кто-то взломает
  • Не забывай делать nginx -t перед reload — иначе можно словить даунтайм из-за опечатки
  • Не запускай Nginx от root (он и так сам себя дропает до www-data, но не меняй это без причины)
  • Не пихай все сайты в /var/www/html — делай отдельные папки для каждого проекта
  • Не игнорируй логи — если что-то не работает, смотри в /var/log/nginx/error.log

Пример реального использования

Недавно настраивал сервер для pet-проекта: простой лендинг + API на backend. Nginx работает как reverse proxy: статику отдаёт напрямую, а все запросы к /api/ проксирует на backend (например, на 127.0.0.1:5000). Конфиг выглядел так:


server {
    listen 80;
    server_name mypetproject.ru;

    root /var/www/mypetproject;
    index index.html;

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

    location /api/ {
        proxy_pass http://127.0.0.1:5000/;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

Потом добавил SSL через certbot — и всё заработало на HTTPS. Автоматическое продление сертификата — вообще must-have, не забывай проверять certbot renew --dry-run раз в пару месяцев.

Заключение

Nginx — реально топ за свои деньги (а он бесплатный). Если держишь свои проекты на Ubuntu 22.04, ставь Nginx, не парься. Всё просто, быстро и надёжно. Если что-то пошло не так — смотри логи, читай официальную документацию или гугли ошибки (скорее всего, кто-то уже сталкивался). И да, не забывай обновлять систему и сертификаты.

Полезные ссылки:

Хотите прочитать больше про Разное?
Отзывов нет.

Ваш отзыв

Пожалуйста, заполните поля снизу и добавьте отзыв!.
Имя *
E-mail *
Сайт
Сообщение *