Как настроить Apache для использования пользовательских страниц ошибок в CentOS 7

Вступление

Apache - самый популярный веб-сервер в мире. Он хорошо поддерживается, многофункциональн и гибок. При разработке ваших веб-страниц часто бывает полезно настроить каждый фрагмент контента, который увидят ваши пользователи. Это включает страницы ошибок, когда они запрашивают контент, который недоступен. В этом руководстве мы покажем, как настроить Apache для использования пользовательских страниц ошибок в CentOS 7.

Предпосылки

Чтобы начать работу с этим руководством, вам понадобится пользователь без полномочий root с правами + sudo +. Вы можете настроить пользователя этого типа, следуя нашему initial руководстве по настройке CentOS 7. Вам также необходимо установить Apache в вашей системе. Узнайте, как это настроить, следуя первому шагу на https://www.digitalocean.com/community/tutorials/how-to-install-linux-apache-mysql-php-lamp-stack-on-centos-7 [ это руководство].

Создание пользовательских страниц ошибок

Мы создадим несколько пользовательских страниц ошибок для демонстрационных целей, но ваши пользовательские страницы, очевидно, будут другими.

Мы разместим наши пользовательские страницы ошибок в каталоге + / var / www / html, где установка CentOS Apache устанавливает свой корневой каталог документов по умолчанию. Мы создадим страницу для 404 ошибок, которая называется + custom_404.html +, и страницу для общих ошибок уровня 500, которая называется + custom_50x.html +. Вы можете использовать следующие строки, если вы только тестируете. В противном случае разместите свой собственный контент в следующих местах:

echo "<h1 style='color:red'>Error 404: Not found :-(</h1>" | sudo tee /var/www/html/custom_404.html
echo "<p>I have no idea where that file is, sorry.  Are you sure you typed in the correct URL?</p>" | sudo tee -a /var/www/html/custom_404.html
echo "<h1>Oops! Something went wrong...</h1>" | sudo tee /var/www/html/custom_50x.html
echo "<p>We seem to be having some technical difficulties. Hang tight.</p>" | sudo tee -a /var/www/html/custom_50x.html

Теперь у нас есть две пользовательские страницы ошибок, которые мы можем обслуживать, когда клиентские запросы приводят к различным ошибкам.

Настройка Apache для использования ваших страниц ошибок

Теперь нам просто нужно сказать Apache, что он должен использовать эти страницы всякий раз, когда возникают правильные условия ошибки. Мы можем создать новый файл конфигурации в каталоге + / etc / httpd / conf.d +, где Apache считывает фрагменты конфигурации. Мы назовем новый файл + custom_errors.conf +:

sudo nano /etc/httpd/conf.d/

Теперь мы можем указать Apache на наши пользовательские страницы ошибок.

Прямые ошибки на правильных пользовательских страницах

Мы можем использовать директиву + ErrorDocument +, чтобы связать каждый тип ошибки с соответствующей страницей ошибок. По сути, нам просто нужно отобразить код состояния http для каждой ошибки на страницу, которую мы хотим обслуживать, когда она возникает.

В нашем примере отображение ошибок будет выглядеть так:

/etc/httpd/conf.d/custom_errors.conf

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

Однако мы добавим дополнительный набор конфигураций, чтобы клиенты не могли напрямую запрашивать наши страницы ошибок. Это может предотвратить некоторые странные ситуации, когда текст страницы ссылается на ошибку, но http-статус «200» (указывает на успешный запрос).

Ответьте 404, когда страницы ошибок запрашиваются напрямую

Чтобы реализовать это поведение, нам нужно добавить блок + Files + для каждой из наших пользовательских страниц. Внутри мы можем проверить, установлена ​​ли переменная окружения + REDIRECT_STATUS. Это должно быть установлено только тогда, когда директива + ErrorDocument + обрабатывает запрос. Если переменная среды пуста, мы выдадим ошибку 404:

/etc/httpd/conf.d/custom_errors.conf

ErrorDocument 404 /custom_404.html
ErrorDocument 500 /custom_50x.html
ErrorDocument 502 /custom_50x.html
ErrorDocument 503 /custom_50x.html
ErrorDocument 504 /custom_50x.html

Когда страницы ошибок запрашиваются непосредственно клиентами, возникает ошибка 404, поскольку не установлена ​​правильная переменная среды.

Настроить тестирование на 500-уровневые ошибки

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

Добавьте директиву + ProxyPass + внизу файла. Отправьте запросы на + / proxytest + на порт 9000 на локальной машине (где не работает ни одна служба):

/etc/httpd/conf.d/custom_errors.conf

ErrorDocument 404 /custom_404.html
ErrorDocument 500 /custom_50x.html
ErrorDocument 502 /custom_50x.html
ErrorDocument 503 /custom_50x.html
ErrorDocument 504 /custom_50x.html

<Files "custom_404.html">
   <If "-z %{ENV:REDIRECT_STATUS}">
       RedirectMatch 404 ^/custom_404.html$
   </If>
</Files>

<Files "custom_50x.html">
   <If "-z %{ENV:REDIRECT_STATUS}">
       RedirectMatch 404 ^/custom_50x.html$
   </If>
</Files>

Сохраните и закройте файл, когда вы закончите.

Перезапуск Apache и тестирование ваших страниц

Проверьте ваш файл конфигурации на наличие синтаксических ошибок, набрав:

sudo apachectl configtest

Решать любые проблемы, о которых сообщается. Если ваши файлы не содержат синтаксических ошибок, перезапустите Apache, набрав:

sudo systemctl restart httpd

Теперь, когда вы переходите на домен или IP-адрес вашего сервера и запрашиваете несуществующий файл, вы должны увидеть страницу 404, которую мы настроили:

http:///thiswillerror

изображение: https: //assets.digitalocean.com/articles/nginx_custom_error_1404/custom_404.png [настраиваемый apache 404]

Когда вы перейдете в место, которое мы настроили для фиктивного пропуска, мы получим ошибку «503 услуга недоступна» с нашей пользовательской страницей на 500 уровней:

http:///proxytest

изображение: https: //assets.digitalocean.com/articles/nginx_custom_error_1404/custom_50x.png [пользовательский apache 50x]

Теперь вы можете вернуться и удалить поддельную строку пропуска прокси из вашей конфигурации Apache.

Заключение

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

Related