Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты на сайте предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, программного обеспечения, баз данных, сетевого оборудования и других компонентов инфраструктуры. Перед выполнением действий создайте резервную копию и по возможности протестируйте изменения в безопасной среде. Пользователь самостоятельно оценивает риски и несет ответственность за результат. При отсутствии необходимых знаний обратитесь к квалифицированному ИТ-специалисту.

CUSTOM_ERROR_PAGE_FAIL Linux / DevOps

Настройка кастомных страниц ошибок (404, 502, 503) в Nginx и Apache

Обновлено: 21.08.2026
  • Пользователи видят стандартную страницу-заглушку веб-сервера (502 Bad Gateway или 404 Not Found nginx), раскрывающую версию сервера.
  • Nginx перезаписывает статус ответа бэкенда на 200 OK при показе кастомной страницы ошибки.
  • Циклические редиректы при попытке загрузить изображения или CSS-стили для страницы ошибки.

1. Настройка кастомных страниц в Nginx

В блоке server задайте пути к статическим страницам:

server {
    listen 80;
    server_name example.com;
    root /var/www/html;

    # Определение страниц для кодов 404 и линейки 50x
    error_page 404 /errors/404.html;
    error_page 500 502 503 504 /errors/50x.html;

    # Защищенный location для статики ошибок
    location ^~ /errors/ {
        root /var/www;
        internal; # Доступ запрещен для прямых HTTP-запросов
    }
}

2. Перехват ошибок от проксируемого бэкенда

Если ошибки 502 генерирует бэкенд (Node.js/PHP), включите их перехват в Nginx:

location / {
    proxy_pass http://backend_app;
    proxy_intercept_errors on;
    fastcgi_intercept_errors on;
}

3. Настройка страниц ошибок в Apache (ErrorDocument)

В конфигурационном файле VirtualHost или в .htaccess:

ErrorDocument 404 /errors/404.html
ErrorDocument 500 /errors/500.html
ErrorDocument 502 /errors/502.html
ErrorDocument 503 /errors/503.html

4. Валидация и перезагрузка

nginx -t && systemctl reload nginx
apachectl configtest && systemctl reload apache2
💡 Практика специалистов: Всегда встраивайте CSS-стили и изображения (base64) прямо в тело HTML-файла страницы ошибки (Single Page). Если сервер ляжет по причине 502, внешние CSS/JS файлы не загрузятся, и пользователь увидит сломанную верстку.

Частые вопросы (FAQ)

Зачем нужна директива internal в блоке location /errors/?

Директива internal запрещает внешним пользователям открывать страницу /errors/404.html напрямую через браузер. Страница будет отображаться только в результате внутреннего перенаправления сервера при ошибке.

Почему Nginx отдает кастомную страницу с кодом HTTP 200 вместо 404?

Это происходит, если в error_page указан знак равенства (=), например: error_page 404 =200 /404.html. Не используйте подмену кода, если хотите сохранить корректный HTTP-статус для поисковых систем.

Полезные материалы
Рекомендуем