Честно, 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)
Установка — пошаговая инструкция
- Обнови систему:
sudo apt update && sudo apt upgrade -y
- Установи Nginx:
sudo apt install nginx -y
Он сразу подтянет все зависимости и запустится как сервис. - Проверь статус:
systemctl status nginx
Должно быть что-то вродеactive (running)
. - Открой порты в firewall (если ufw включён):
sudo ufw allow 'Nginx Full'
sudo ufw reload
- Проверь, что всё работает:
Открой в браузереhttp://<твой_сервер>
— увидишь стартовую страницу Nginx. - Настрой свой сайт:
Кидай свои файлы в/var/www/html
(или создай свою директорию и настройserver block
). - Добавь свой конфиг:
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/
- Проверь конфиг:
sudo nginx -t
- Перезапусти Nginx:
sudo systemctl reload nginx
- Настрой SSL (Let’s Encrypt):
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d example.com -d www.example.com
Следуй инструкциям в терминале. Сертификат подтянется, конфиг обновится. - Проверь 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, не парься. Всё просто, быстро и надёжно. Если что-то пошло не так — смотри логи, читай официальную документацию или гугли ошибки (скорее всего, кто-то уже сталкивался). И да, не забывай обновлять систему и сертификаты.
Полезные ссылки:
Ваш отзыв