Home » Настройка кастомных страниц ошибок в Nginx на Ubuntu 24.04
Настройка кастомных страниц ошибок в Nginx на Ubuntu 24.04

Настройка кастомных страниц ошибок в Nginx на Ubuntu 24.04

В этой статье разберёмся, как и зачем настраивать кастомные страницы ошибок в Nginx на Ubuntu 24.04. Почему это важно? Потому что дефолтные страницы ошибок Nginx выглядят уныло и неинформативно, а иногда даже пугают пользователей. Кастомные страницы — это не только про эстетику, но и про безопасность, удобство и даже маркетинг. Если ты хочешь, чтобы твой сервер выглядел профессионально, а не как «гаражный стартап», читай дальше. Здесь будет всё: как это работает, как быстро всё настроить, реальные кейсы, примеры, грабли и лайфхаки. Погнали!

Как это работает? Почему Nginx показывает ошибки так, как показывает

Когда пользователь запрашивает страницу, которой нет, или что-то идёт не так (например, сервер перегружен или доступ запрещён), Nginx возвращает HTTP-статус ошибки (например, 404, 403, 500 и т.д.) и показывает свою стандартную страницу. Она минималистична, но абсолютно безликая. Вот пример:


404 Not Found
nginx/1.24.0 (Ubuntu)

Выглядит не очень, правда? А теперь представь, что ты владелец SaaS-сервиса, интернет-магазина или просто хочешь, чтобы твой проект выглядел солидно. Пользователь попадает на такую страницу — и что он думает? «О, тут что-то сломалось, наверное, всё плохо». А ведь можно сделать красиво: добавить фирменный стиль, контактную информацию, ссылки на главную, даже мемасик для поднятия настроения.

В Nginx есть директива error_page, которая позволяет перенаправлять пользователя на кастомную страницу при возникновении определённой ошибки. Это работает быстро, просто и гибко. Можно сделать одну страницу для всех ошибок, а можно для каждой — свою. Можно даже логировать, кто и когда попал на ошибку, чтобы потом анализировать и улучшать UX.

Как быстро и просто всё настроить?

Давай разберёмся по шагам, как на Ubuntu 24.04 (и не только) сделать свои страницы ошибок для Nginx. Всё просто, но есть нюансы, о которых расскажу ниже.

  1. Создай свои HTML-страницы ошибок
    Обычно их кладут в отдельную папку, например, /var/www/html/errors/. Пример для 404:

    /var/www/html/errors/404.html
  2. Отредактируй конфиг Nginx
    Открой файл конфигурации сайта (например, /etc/nginx/sites-available/default или свой vhost).
  3. Добавь директивы error_page
    Вот пример для 404 и 500 ошибок:

    error_page 404 /errors/404.html;
    error_page 500 502 503 504 /errors/50x.html;

    location = /errors/404.html {
    root /var/www/html;
    internal;
    }

    location = /errors/50x.html {
    root /var/www/html;
    internal;
    }

  4. Проверь права доступа
    Файлы должны быть читаемы пользователем, под которым работает Nginx (обычно www-data).
  5. Перезапусти Nginx

    sudo systemctl reload nginx

Всё! Теперь при ошибках 404 или 500 пользователь увидит твои красивые страницы.

Примеры, схемы, практические советы

Вот несколько реальных кейсов, с которыми сталкивался лично или видел на проектах коллег.

Кейс Что сделали Результат Рекомендация
Интернет-магазин: 404 Not Found Поставили кастомную страницу с поиском по каталогу и ссылкой на популярные товары Увеличение возврата пользователей на сайт, снижение отказов Добавляй полезные ссылки и call-to-action на 404
Стартап: 500 Internal Server Error Показали мем с котиком и ссылку на поддержку Пользователи не злятся, а пишут в поддержку с улыбкой Юмор и человечность — твои друзья
Корпоративный сайт: 403 Forbidden Показали строгую страницу с логотипом и контактами для связи Пользователь понимает, что доступ ограничен, но может обратиться за помощью Не раскрывай лишнюю инфу, но давай возможность связаться
Плохой пример: просто редирект на главную Все ошибки ведут на / Пользователь теряется, не понимает, что произошло Не делай так! Лучше информативная страница ошибки

Полный список команд для настройки


# 1. Создаём папку для ошибок (если нет)
sudo mkdir -p /var/www/html/errors

# 2. Кладём туда свои HTML-файлы
sudo nano /var/www/html/errors/404.html
sudo nano /var/www/html/errors/50x.html

# 3. Проверяем права
sudo chown -R www-data:www-data /var/www/html/errors
sudo chmod -R 755 /var/www/html/errors

# 4. Редактируем конфиг Nginx
sudo nano /etc/nginx/sites-available/default

# 5. Добавляем error_page и location (см. выше)

# 6. Проверяем синтаксис
sudo nginx -t

# 7. Перезапускаем Nginx
sudo systemctl reload nginx

Похожие решения, программы и утилиты

  • Apache HTTPD — тоже поддерживает кастомные error pages через ErrorDocument (документация).
  • Caddy — современный веб-сервер, поддерживает свои error pages (документация).
  • Traefik — для контейнерных инфраструктур, тоже можно настроить кастомные ошибки (документация).
  • nginx-extras — расширенный пакет Nginx для Ubuntu, иногда нужен для специфических модулей.

Статистика и сравнение с другими решениями

Веб-сервер Поддержка кастомных ошибок Гибкость Простота настройки
Nginx Да Высокая (разные страницы, условия, internal) Средняя (править конфиг, перезапуск)
Apache Да Средняя (ErrorDocument, но без условий) Простая (править .htaccess или конфиг)
Caddy Да Высокая (JSON-конфиг, шаблоны) Простая (Caddyfile)
Traefik Да Средняя (middleware, но сложнее для новичков) Средняя

Nginx — золотая середина: гибко, быстро, но требует внимательности к синтаксису и перезапуску сервиса.

Интересные факты и нестандартные способы использования

  • Скрытие информации о сервере: Кастомные страницы позволяют убрать упоминание «nginx» и версию сервера, что повышает безопасность.
  • Маркетинг и upsell: На страницах ошибок можно размещать промокоды, ссылки на акции, подписку на рассылку.
  • Логирование и аналитика: Через кастомные страницы можно внедрять JS-метрики (например, Google Analytics, Yandex.Metrika) и отслеживать, сколько пользователей попадает на ошибки.
  • Автоматизация: Можно генерировать страницы ошибок автоматически через CI/CD, подставлять динамические данные (например, время, номер тикета).
  • Мульти-язычность: С помощью map и if можно показывать разные страницы ошибок для разных языков или доменов.
  • API-friendly: Для API можно возвращать JSON-ошибки вместо HTML, используя default_type application/json; и кастомные шаблоны.

Какие новые возможности открываются? Как это поможет в автоматизации и скриптах?

  • CI/CD и DevOps: Кастомные страницы ошибок можно хранить в git-репозитории и деплоить автоматически вместе с кодом сайта.
  • Мониторинг: Если на кастомной странице ошибки есть уникальный идентификатор или логика, можно быстро находить баги и реагировать на инциденты.
  • Скрипты для массового обновления: Bash-скрипты легко копируют новые версии error pages на все сервера в кластере.
  • Интеграция с внешними сервисами: Например, можно отправлять уведомления в Slack или Telegram, если количество ошибок резко выросло.
  • Тестирование: Легко тестировать разные варианты UX для ошибок через A/B-тесты.

Вывод — заключение и рекомендации

Кастомные страницы ошибок в Nginx — это must-have для любого уважающего себя проекта. Это не только про красоту, но и про удобство, безопасность, аналитику и даже маркетинг. Настроить их на Ubuntu 24.04 проще простого: создай свои HTML-страницы, пропиши пару строк в конфиге, перезапусти Nginx — и твой сервер уже выглядит на порядок солиднее. Не забывай про права доступа, не делай редирект на главную (это зло!), и обязательно добавляй полезную информацию на страницы ошибок.

Если ты хочешь быстро развернуть VPS для своих экспериментов — закажи VPS тут. Для серьёзных задач — выделенный сервер под любые нужды.

Официальная документация Nginx по error_page — https://nginx.org/en/docs/http/ngx_http_core_module.html#error_page.
Ubuntu 24.04 LTS — https://ubuntu.com/download/server.

Прокачивай свои сервера, делай красиво и удобно — и пусть твои пользователи никогда не видят ошибок, а если увидят — пусть это будет лучший опыт!


В этой статье собрана информация и материалы из различных интернет-источников. Мы признаем и ценим работу всех оригинальных авторов, издателей и веб-сайтов. Несмотря на то, что были приложены все усилия для надлежащего указания исходного материала, любая непреднамеренная оплошность или упущение не являются нарушением авторских прав. Все упомянутые товарные знаки, логотипы и изображения являются собственностью соответствующих владельцев. Если вы считаете, что какой-либо контент, использованный в этой статье, нарушает ваши авторские права, немедленно свяжитесь с нами для рассмотрения и принятия оперативных мер.

Данная статья предназначена исключительно для ознакомительных и образовательных целей и не ущемляет права правообладателей. Если какой-либо материал, защищенный авторским правом, был использован без должного упоминания или с нарушением законов об авторском праве, это непреднамеренно, и мы исправим это незамедлительно после уведомления. Обратите внимание, что переиздание, распространение или воспроизведение части или всего содержимого в любой форме запрещено без письменного разрешения автора и владельца веб-сайта. Для получения разрешений или дополнительных запросов, пожалуйста, свяжитесь с нами.

Leave a reply

Your email address will not be published. Required fields are marked