Bsdadmin.ru

Записки администратора FreeBSD

Путь на сайте

Домашняя Веб-сервера Устранение ошибок веб-сервера 4xx и 5xx на сайте

Устранение ошибок веб-сервера 4xx и 5xx на сайте

Ошибками в протоколе HTTP называется поведение веб-сервера, когда  по  какой-то причине он не может успешно отправить клиенту запрашиваемый  документ. Сервер сообщает клиенту в HTTP-заголовке код ошибки, который  на стороне клиента обрабатывается браузером.
Каждая ошибка, выдаваемая веб-сервером, имеет код, соответствующий типу  возникшей ошибки. Коды ошибок  стандартизованы и подробно описаны в  интернет-стандарте RFC2616 (Hypertext Transfer Protocol -- HTTP/1.1). 
 
Возможные типы кодов ошибок:
2xx - запрос выполнен успешно - сервер успешно отправил клиенту запрашиваемый документ
3xx - запрос успешно перенаправлен - тоже положительный код. Он говорит  о том, что запрос клиента был перенаправлен. Используется при работе с  кэширующими серверами, а также в алгоритме, когда браузер клиента  проверяет актуальность документа на сервере (дату создания, размер и  так далее)
4xx   - документ не был отправлен клиенту, так как произошла критическая ошибка. Например, запрошенный документ не найден на сервере, доступ к документу запрещен и так далее .
5xx -  критическая ошибка на сервере. К примеру,  вызываемый скрипт завершился некорректно, либо возникли проблемы с  рабочей средой сервера (нехватка оперативной памяти, нехватка дискового  пространства, и т.д.).
Давайте рассмотрим ошибки 4xx и 5xx и как с ними можно бороться.
 
Предположим, Вы разместили сайт на хостинге, загрузили файлы и получили  ошибку 403 при попытке открыть сайт через браузер. Обычно данная ошибка  возникает в случае если вы назвали неправильно индексный файл, который  должен показываться при обращении к директории.
По  умолчанию индексный файл может иметь названия index.html,  index.html.var, index.htm, index.shtml, index.php, index.php3,  index.phtml, index.cgi.
Порядок применения этих файлов можно  просмотреть и изменить  в конфигурационном файле Apache2.x  
При этом, если в папке находятся index.html и index.htm, то  по-умолчанию будет отображаться index.html.
Также вероятно, что в названии индексного файла присутствуют заглавные  буквы, а в Unix-системах регистр букв  имеет значение.
 Если имеется потребность в использовании индексного файла с другим  именем, то необходимо добавить соответствующие директивы в файл  .htaccess.
 
Ошибка 403 "Доступ запрещен" 
Данная ошибка свидетельствует о том, что сервер не смог обработать з апрос, так как доступ к файлу был запрещен. Наиболее часто это  возникает в трех случаях:
в директории нет индексного файла (например, index.html) - и при этом  запрещен просмотр списка файлов в данной директории или на всем  виртуальном сервере.
указанны неверные права доступа на файл (папку, скрипт).
Необходимо установить права в соответствии с разделом Права доступа для  файлов, папок, скриптов.
По умолчанию просмотр списка файлов в директории запрещен. Для того,  чтобы разрешить вывод списка файлов необходимо создать файл .htaccess,  в котором прописать директиву Options +Indexes в виде отдельной строки.
 
Ошибка 404 "Файл не найден"
Ошибка 404  возникает когда пользователь запрашивает у веб-сервера  файл, которого не существует. Вы можете наблюдать протокол таких ошибок  в файле error_log и учитывать это - отслеживать какие документы на  сервере "не найдены" и корректировать неправильные ссылки в своих  html-документах.
Для удобства посетителей сайта можно обрабатывать ошибки 404, заменяя  стандартные ответы веб-сервера на свои страницы с "человеческим"  описанием ошибки и советами что делать в этом случае. Также полезно  разместить на такой странице карту вашего сайта или ссылку на поисковую  систему.
 
Замена стандартного сообщение об ошибке своим:
Создайте в директории public_html файл .htaccess и поместите в него  следующую инструкцию для веб-сервера Apache:
  ErrorDocument 404 /not-found.html 
 Затем создайте файл not-found.html , в который поместите описание  возникшей ошибки и советы о том,что делать в этом случае посетителю  вашего сайта. Теперь пользователь, который наберет в своем браузере  адрес несуществующей страницы, будет автоматически перенаправлен  сервером на файл not-found.html.
С помощью директивы ErrorDocument можно обрабатывать не только ошибку 404, но и  все другие ошибки. Так, например, можно обрабатывать и ошибку 403, которая упоминается в этом документе выше.
 
Ошибка 500 "Internal Server Error"
 Ошибка 500 "Internal Server Error" возникает в случае невозможности запуска скрипта, который вы разместили на сервере, в случае ошибок в скрипте, а также в случае когда вы поместили неправильную инструкцию в файл .htaccess. Этот список причин возникновения ошибки 500 не конечный, есть еще масса причин, по которым может возникнуть ошибка 500.
Однако, упомянутые три случая встречаются наиболее часто.
Рассмотрим сначала случай, когда вы поместили некорректную инструкцию в  файл .htaccess. Если вы ошиблись в написании названия нужной директивы  или параметров к ней, в файле error_log вы найдете примерно такую  ошибку:
 
[ Wed Apr 14 17:01:38 2004] [alert] [client 217.16.16.16]
/home/clients/websites/w_XXX/public_html/.htaccess: Invalid command
"DrectoryIndex",perhaps mis-spelled or defined by a module not included  in the server configuration
 
Веб-сервер укажет вам какую конкретно директиву он посчитал ошибочной -  ее нужно будет исправить. В данном случае веб-сервер сообщил что  директивы "DrectoryIndex" он не знает. И действительно - нет директивы  "DrectoryIndex", есть "DirectoryIndex". Имеет место опечатка.
  Если ошибка 500 возникает при обращении к скрипту на языке Perl,  размещенному в директории cgi, нужно проверить права доступа на этот  скрипт. Права должны быть 700. Если это не так, нужно изменить права на  700 командой chmod 700 script.pl в unix shell или воспользоваться  другими программами для доступа к web-серверу. Нужно отдельно отметить  - права на скрипты должны быть установлены строго в 700.
 
Если после проверки корректности установленных прав на файл скрипта  ошибка не исчезла, нужно изучить последние записи в файле error_log - в  него веб-сервер помещает все сообщения об ошибках. Так вы найдете  строчку вида:
  [Fri Apr 9 15:05:31 2004] [error] [client 217.16.16.16]
Premature end of script headers:
/home/clients/websites/w_XXX/public_html/cgi/script.pl
 Первое, что нужно сделать если вы получили такую ошибку, это проверить  правильно ли скрипт выдает HTTP-заголовки. Каждый скрипт должен сначала  печатать строку с указанием соответствующего Content-type и только  потом непосредственно то, что увидит пользователь (например, HTML-код). 
 Пример строки для выдачи заголовка обычного HTML-документа:
 p rint "Content-type: text/html; charset=windows-1251";
 Если и после выдачи правильных заголовков ошибка 500 не исчезла, нужно  проверить корректность работы скрипта в целом. Для этого нужно получить  доступ в unix shell и далее выполнить команду проверки синтаксиса:
> perl -cw script.pl 
script.pl syntax OK
Если скрипт написан с ошибками, нужно исправить ошибки, руководствуясь  соответствующей диагностикой, далее проверить синтаксис скрипта снова. 
 
Ошибка 500 "Плохой интерпретатор"
Ошибка 500 "Плохой интерпретатор" может быть вызвана неправильно  указанным интерпретатором или недостатком прав на использование данного  интерпретатора, в таком случае вы увидите страницу с ошибкой 500  "Плохой интерпретатор". 
Пример: используя CGI скрипт написанный на языке perl, Вы забыли  прописать в первой строке интерпретатор "#!/usr/bin/perl" или  опечатались.
В данном случае скрипт не выполнится и Вы увидите ошибку 500 "Плохой  интерпретатор".
 
Ошибка 503 "Service Unavailable"  
Ошибка 503 "Service Unavailable" - возникает в случаях, когда серверу  не хватает ресурсов для выполнения вашего запроса. Эта ошибка носит  временный характер и исчезает через некоторое время. Если у Вас  появилась такая ошибка, то для начала мы рекомендуем проверить не  запущенно ли у Вас в данный момент слишком много FTP или SSH  соединений. Если запущены, попробуйте их закрыть. Так-же, необходимо  убедится что у Вас нет "подвисших" скриптов. Если есть, необходимо либо  дождаться их завершения, либо завершить их принудительно. 
 
Если у вас часто появляется ошибка 503, то необходимо сменить ваш  тарифный план хостинга на более высокий. Для каждого тарифного плана  определены свои собственные ограничения и они указаны на нашем сайте, в  тарифах виртуального хостинга. 
 
Так-же,  требуется заняться оптимизацией работы вашего сайта, чтобы ваши скрипты выполнялись  быстрее и требовали как можно меньше ресурсов сервера. Чем быстрее выполнится один ваш скрипт, тем быстрее будут выделены ресурсы для выполнения следующего скрипта (задачи). Максимально возможное количество одновременно  выполняемых скриптов указано на нашем сайте для каждого тарифного  плана. 
 
Обычно, большая часть скриптов выдают один и тот-же результат в независимости от времени их запуска, и такие скрипты желательно закешировать, таким образом, при следующем запросе на вызов этого скрипта, запуск скрипта не произойдет, и сервер вернет результат из своей кэш памяти. При этом, лимиты будут проигнорированы, а ресурсы сервера будут предоставлены тем процессам, которые действительно в них  нуждаются.
 

Домашняя Веб-сервера Устранение ошибок веб-сервера 4xx и 5xx на сайте