Вики / Службы и systemd
nginx
Веб-сервер и обратный прокси. Конфиг проверяется nginx -t; reload без даунтайма.
nginx — высокопроизводительный веб-сервер и обратный прокси. Один master-процесс и несколько worker'ов. Управляется systemd (systemctl).
запрос → nginx (:80/:443) → отдать статику ИЛИ proxy_pass → апстрим (app:8000)
Золотое правило: меняешь конфиг — сначала nginx -t, потом reload.
Расположение:
/etc/nginx/nginx.conf— главный конфиг;/etc/nginx/sites-available/— сайты (конфиги);/etc/nginx/sites-enabled/— симлинки на включённые сайты.
Минимальный сайт-прокси:
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
Включить сайт и применить:
sudo ln -s /etc/nginx/sites-available/site.conf /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx
nginx -t # проверка конфигурации (файл + строка ошибки!)
nginx -T # вывести весь итоговый конфиг
systemctl reload nginx # применить без обрыва соединений
systemctl restart nginx # полный перезапуск
ss -tlnp | grep nginx # на каких портах слушает
tail -f /var/log/nginx/error.log # ошибки
tail -f /var/log/nginx/access.log # запросы
nginx -t ругается на синтаксис
Чаще всего — потерянная ; в директиве. nginx -t называет файл и строку —
открой и почини. 🧪 Потренировать: задание fix-nginx.
Служба не стартует, порт занят
ss -tlnp | grep :80 — кто держит порт. Часто второй nginx/apache. Останови
конфликтующий или смени listen.
502 Bad Gateway
nginx не достучался до апстрима. Проверь: апстрим жив (curl localhost:8000),
верный proxy_pass (схема http vs https!), journalctl -xeu nginx,
/var/log/nginx/error.log.
403 Forbidden / 404 на статику
Права на файлы/каталоги (ls -l, nginx читает от www-data), верный root/alias.
nginx -t # проверить конфиг ПЕРЕД reload
systemctl reload nginx # применить без даунтайма
ss -tlnp | grep nginx # порты
tail -f /var/log/nginx/error.log # ошибки
См. также
- journalctl — Логи и аудит
- ss (сокеты и порты) — Сеть
- systemctl — Службы и systemd
- 📖 Теория: подробнее
- 🧪 Практика: потренировать