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

Вступление

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

Предпосылки

Чтобы начать работу с этим руководством, вам понадобится пользователь без полномочий root с правами + sudo +. Вы можете настроить пользователя этого типа, следуя нашему initial руководстве по настройке CentOS 7. Вам также необходимо установить Nginx в вашей системе. Узнайте, как настроить это, следуя ths Guide.

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

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

Мы разместим наши пользовательские страницы ошибок в каталоге + / usr / share / nginx / html +, где CentOS 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, что он должен использовать эти страницы всякий раз, когда возникают правильные условия ошибки. Нам нужно настроить блоки вашего сервера. В CentOS 7 основной блок сервера находится в файле + / etc / nginx / nginx.conf +. Мы будем настраивать этот серверный блок, но вы должны настроить любые другие серверные блоки, которые вы настроили:

sudo nano /etc/nginx/nginx.conf

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

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

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

/etc/nginx/nginx.conf

http {

   . . .

   server {

       . . .

       error_page 404 /;
       location = / {


       }

       . . .
   }
}

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

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

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

/etc/nginx/nginx.conf

http {

   . . .

   server {

       . . .

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

       error_page  500 502 503 504 /;
       location = / {


       }




   }
}

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

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

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

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

sudo nginx -t

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

sudo systemctl restart nginx

Теперь, когда вы переходите на домен или 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