Как настроить Nginx для использования пользовательских страниц ошибок в Ubuntu 14.04

Вступление

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

Предпосылки

Чтобы начать работу с этим руководством, вам понадобится пользователь без полномочий root с правами + sudo +. Вы можете настроить пользователя этого типа, следуя нашему https://www.digitalocean.com/community/tutorials/initial-server-setup-with-ubuntu-14-04 руководстве по настройке местах для Ubuntu 14.04] ,

Вам также необходимо установить Nginx в вашей системе. Узнайте, как настроить это, следуя th guide.

После того, как вы выполнили вышеупомянутые шаги, продолжите это руководство.

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

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

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

echo "<h1 style='color:red'>Error 404: Not found :-(</h1>" | sudo tee /usr/share/nginx/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 /usr/share/nginx/html/custom_404.html
echo "<h1>Oops! Something went wrong...</h1>" | sudo tee /usr/share/nginx/html/custom_50x.html
echo "<p>We seem to be having some technical difficulties. Hang tight.</p>" | sudo tee -a /usr/share/nginx/html/custom_50x.html

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

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

Теперь нам просто нужно сказать Nginx, что он должен использовать эти страницы всякий раз, когда возникают правильные условия ошибки. Откройте файл блока сервера в каталоге + / etc / nginx / sites-enabled +, который вы хотите настроить. Мы будем использовать файл блока сервера по умолчанию, называемый + default +, но вы должны настроить свои собственные блоки сервера, если вы используете файл не по умолчанию:

sudo nano /etc/nginx/sites-enabled/default

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

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

Используйте директиву + error_page +, чтобы при возникновении ошибки 404 (когда запрошенный файл не был найден), созданная вами пользовательская страница обслуживалась. Мы создадим блок местоположения для файла, где мы сможем убедиться, что корень соответствует расположению нашей файловой системы и что файл доступен только через внутренние перенаправления Nginx (не запрашиваемые напрямую клиентами):

/ И т.д. / Nginx / сайты с поддержкой / по умолчанию

server {
       listen 80 default_server;
       listen [::]:80 default_server ipv6only=on;

       . . .






}

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

Направляйте ошибки 500 уровней на пользовательскую страницу 50x

Затем мы можем добавить директивы, чтобы гарантировать, что когда Nginx обнаружит ошибки 500-го уровня (проблемы, связанные с сервером), он будет обслуживать другую пользовательскую страницу, которую мы создали. Это будет следовать той же формуле, которую мы использовали в предыдущем разделе. На этот раз мы устанавливаем несколько ошибок уровня 500 для всех, используя страницу + custom_50x.html +:

/ И т.д. / Nginx / сайты с поддержкой / по умолчанию

server {
       listen 80 default_server;
       listen [::]:80 default_server ipv6only=on;

       . . .

       error_page 404 /custom_404.html;
       location = /custom_404.html {
               root /usr/share/nginx/html;
               internal;
       }










}

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

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

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

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

sudo nginx -t

Если были обнаружены какие-либо ошибки, исправьте их, прежде чем продолжить. Когда синтаксические ошибки не возвращаются, перезапустите Nginx, набрав:

sudo service nginx restart

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

http:///thiswillerror

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

Когда вы перейдете в место, которое мы настроили для прохода FastCGI, мы получим ошибку 502 Bad Gateway с нашей пользовательской страницей на 500 уровней:

http:///testing

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

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

Заключение

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

Related