Анализ ошибок веб-сервера: просмотр логов tail -f в Nginx
Клиенты жалуются, что корзина не работает: с чего начать?
Пользователи пишут в поддержку о белом экране или ошибках 500/502. В браузере детали не видны. Все ответы записываются веб-сервером в файлы журнала (логов).
Типовые коды ошибок веб-сервера
| Код | Что означает | Частая причина |
|---|---|---|
| 500 Internal Server Error | Сбой в коде скрипта | Фатальная ошибка в PHP/Python коде |
| 502 Bad Gateway | Бэкенд недоступен | Упала служба php-fpm или gunicorn |
| 504 Gateway Timeout | Таймаут шлюза | Тяжелый запрос завис в MySQL |
Как читать логи в реальном времени
Утилита tail позволяет смотреть конец файла и в режиме live видеть каждую новую строчку ошибки, возникающую при кликах пользователей.
- Открываем поток ошибок Nginx:
sudo tail -n 50 -f /var/log/nginx/error.log - Воспроизводим проблему: попросите клиента (или сами) нажать сломанную кнопку на сайте. На экране мгновенно появится стек ошибки.
- Фильтрация только критических записей:
sudo tail -f /var/log/nginx/error.log | grep --color=auto -E "crit|error" - Просмотр логов успешных запросов (Access log):
sudo tail -f /var/log/nginx/access.log
Для выхода из режима просмотра логов нажмите комбинацию клавиш Ctrl + C.
Частые вопросы (FAQ)
Где лежат логи, если у меня несколько сайтов?
Пути прописаны в файлах /etc/nginx/sites-available/*.conf внутри директив access_log и error_log.
Что означает ошибка connect() to unix:/run/php/php8.2-fpm.sock failed?
Служба PHP остановлена. Запустите ее командой: sudo systemctl start php8.2-fpm.
Как очистить лог, если он стал весить слишком много?
Выполните sudo truncate -s 0 /var/log/nginx/error.log. Не удаляйте сам файл через rm!
Как найти в логе запросы только с конкретного IP?
Используйте grep: grep "192.168.1.50" /var/log/nginx/access.log.