Логи nginx и journalctl: как быстро найти ошибку
Если nginx не работает, браузер показывает только итог: 403, 404, 500 или 502. Настоящая причина почти всегда находится в error_log nginx или journalctl.
Сначала nginx -t
Перед перезапуском nginx всегда проверяйте конфиг. Это быстрее, чем искать проблему после неудачного reload.
nginx -t
Если есть ошибка, nginx обычно указывает файл и строку. Исправляйте именно её, а не весь конфиг целиком.
Error log
Error log показывает проблемы с правами, отсутствующими файлами, upstream, сертификатами, синтаксисом и доступом к backend.
tail -n 100 /var/log/nginx/error.log
Access log
Access log полезен для понимания запросов: какие URL открывают, какие коды ответа возвращаются, какие боты ходят по сайту и есть ли повторяющиеся ошибки.
tail -f /var/log/nginx/access.log
Journalctl
Если nginx не стартует как systemd-служба, смотрите journalctl. Там часто видна причина: занятый порт, ошибка в конфиге, отсутствующий файл сертификата.
journalctl -u nginx --no-pager -n 80
Типовые коды ошибок
- 403 — нет прав, нет index-файла или запрещён доступ;
- 404 — неверный root, отсутствует файл или ошибка в try_files;
- 500 — ошибка приложения или backend;
- 502 — nginx не может достучаться до backend;
- bind error — порт уже занят другим процессом.
Проверка занятых портов
ss -tulpn | grep -E ':80|:443'
Если порт 80 занят не nginx, standalone-выпуск сертификата или запуск nginx завершится ошибкой.