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

Nginx – это высокопроизводительный и гибкий веб-сервер.

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

Требования

Для выполнения данного руководства нужно иметь учётную запись пользователя с привилегиями sudo; подробнее об этом можно узнать в руководстве «Начальная настройка сервера Ubuntu 14.04».

Кроме того, нужно предварительно установить Nginx; чтобы получить инструкции по установке веб-сервера, читайте эту статью.

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

Для начала нужно создать свою страницу ошибок.

Примечание: Для тестирования можно использовать следующий код; в противном случае рекомендуется внести в echo собственный текст.

Пользовательские страницы ошибок должны храниться в каталоге /usr/share/nginx/html – стандартном document root веб-сервера Nginx в системе Ubuntu. Создайте страницу 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 называет их блоками server); откройте блок server в каталоге /etc/nginx/sites-enabled

В данном руководстве для примера показано, как отредактировать стандартный хост default; если вы используете другие блоки server, выполните инструкции раздела в файлах этих блоков.

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

Настройка страницы 404

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

/etc/nginx/sites-enabled/default
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;
}
}

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

Настройка страницы ошибок 500

Затем нужно добавить директивы для поддержки пользовательской страницы ошибок 500. Это делается точно таким же образом; используйте следующий код:

/etc/nginx/sites-enabled/default
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;
}
error_page 500 502 503 504 /custom_50x.html;
location = /custom_50x.html {
root /usr/share/nginx/html;
internal;
}
location /testing {
fastcgi_pass unix:/does/not/exist;
}
}

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

Сохраните и закройте файл.

Тестирование настроек

Проверьте синтаксис файла на наличие ошибок при помощи команды:

sudo nginx -t

Если команда обнаружила в файле ошибки, исправьте их. Затем перезапустите веб-сервер:

sudo service nginx restart

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

http://server_domain_or_IP/thiswillerror

На экране появится страница:

Error 404: Not found :-(
I have no idea where that file is, sorry. Are you sure you typed in the correct URL?

Если запросить FastCGI, на экране появится страница ошибки 502 Bad Gateway:

http://server_domain_or_IP/testing
Oops! Something went wrong...
We seem to be having some technical difficulties. Hang tight.

После тестирования удалите фиктивный путь к FastCGI из настроек Nginx.

Заключение

Теперь сервер Nginx обслуживает пользовательские страницы ошибок для сайта. В целом, пользовательские страницы ошибок – это отличный способ помочь посетителям сайта разобраться, в чём дело, предоставить им всю необходимую информацию об ошибке и полезные ссылки (не забудьте убедиться, что ссылки работают даже в случае возникновения ошибок).

Tags: ,

Добавить комментарий