Автор статьи: Меньщиков Алексей
В этой заметке рассматриваются некоторые дополнительные вопросы по настройке и администрированию веб-сервера Apache.
Для начала разберемся с обработкой ошибок.
Допустим, один из посетителей вашего сервера ошибается в написании адреса Web-страницы или специально ищет какой-нибудь спрятанный от простого листинга файл. Так вот, если он указывает неправильный адрес, ему выдается стандартное сообщение об ошибке: «Документ не найден» (ошибка 404), либо «Доступ к такой-то папке запрещен» (403). Мы можем немного разнообразить реакцию сервера в момент возникновения ошибки. Для начала полезно будет знать некоторые коды ошибок (коды ответов сервера):
· 100 — 199: информационные (это не трогаем).
· 200 — 299: Запрос клиента успешен (это тоже нам не надо).
· 300 — 399: Запрос не выполнен полностью, и сервер ждет от посетителя некоторых действий для удовлетворения запроса. (это очень редкие ошибки, поэтому их тоже глупо рассматривать).
· 400 — 499: Неполный запрос (самые частые ошибки, их и рассмотрим ниже).
· 500 — 599: ошибки сервера.
· ошибка 401: Unauthorized посетитель пославший запрос не имеет требуемых полномочий.
· ошибка 403: Forbidden, запрос отклонен, обычно выдаётся когда посетитель пытается открыть документ, доступ к которому запрещен.
· ошибка 404: Not Found, самая распространенная ошибка, искомый документ не найден.
· ошибка 500: Internal Server Error, ошибка на сервере во время выполнения одного из его компонентов, чаще всего это CGI-программа.
Я расскажу на примере одной ошибки, так как обработка остальных ошибок делается идентично, пусть это будет ошибка 404. Для начала создаём файл missing.html (имя файла не важно), в нём можно писать всё что угодно, так как именно этот файл будет выдаваться пользователю, когда он будет посылать запрос на несуществующий документ (например, в нем можно указать карту сайта со ссылками на существующие разделы). Далее открываем файл httpd.conf и находим следующие строчки:
#ErrorDocument 404 /missing.html
Убираем решеточку и изменяем адрес на тот точный путь к файлу missing.html, например:
ErrorDocument 404 http://90.0.0.12/missing.html
Точно такие же манипуляции проделываем и для других ошибок, ответы на которые вы захотите разнообразить и украсить.
Теперь поговорим о об листингах (списках содержимого) каталогов.
Допустим у Вас уже большой сервер (не размерами, а наполнением), куча директорий, Вы часто создаёте новые папки, кладёте туда какие либо ценные документы. Но любой посетитель может запросто посмотреть содержание такой папки. Например, у вас есть папочка texts на сервере в которой лежит множество личной и другой информации, и один из разделов вашего сервера ссылается на один файл из этой папки, например http://90.0.0.12/texts/alex.txt. Опытный посетитель, просто посмотрев адрес ссылки, захочет проверить, а вдруг там лежит что-нибудь еще и, набрав адрес http://90.0.0.12/texts/ попадёт в ваше папку с информацией. Самый простой способ это кинуть в папку пустой файл index.html, хотя тут тоже можно пофантазировать и написать в нём что-то типа: «Просмотр этой директории запрещен. Хакером тебе не быть», но очень часто просто забываешь о таких папках. Для решения этой проблемы есть очень простой способ — запрещение листинга директорий, в которых нет файлов Index.html или Index.htm. Делается это так. Создаём файл .htaccess (перед точкой пробелов нет, кстати, надо заметить, что любая версия Windows не позволяет создавать файл без имени перед точкой, я советую делать это програмкой FAR). В теле этого файла пишем всего лишь одну строку:
Options -Indexes
Теперь надо положить этот файл в корневой каталог вашего сервера, и он запретит листинг всех папок и под-папок тоже. Ну а если же какую то определенную папку вы решили открыть для листинга, то просто запишите в нее тот же .htaccess, но уже содержащий:
Options +Indexes
Возможная проблема. Если вы положили файл и листинг всё ровно открыт, то проблема может быть в следующем. Надо найти в файле httpd.conf следующее (именно с такими комментариями):
# This may also be «None», «All», or any combination of «Indexes»,
# «Includes», «FollowSymLinks», «ExecCGI», or «MultiViews».
#
# Note that «MultiViews» must be named *explicitly* — «Options All»
# doesn’t give it to you.
#
Options Indexes FollowSymLinks
Смотрите: если после слова Options в любом порядке идёт параметр Indexes, то просто уберите его. Строка будет выглядеть так:
Options FollowSymLinks
Я столкнулся с такой проблемой и очень долго не мог понять почему мои .htaccess никак не хотят работать.
Теперь — немного об Alias (псевдонимах).
Есть одна очень полезная штучка для вашего сервера. Допустим у Вас стоит сервер в папке C:/Home/, но вы решили дать возможность посетителям вашего сервера иметь доступ к огромной коллекции программ, которая находиться в папке C:/Progs/, конечно можно всю папку переместить в каталог с остальным сайтом, но это уже неудобно для вас. итак мы просто создаём Alias. Найдите в файле httpd.conf строчку (путь «c:/usr/local/apache/icons» строго зависит от места куда вы установили сервер):
Alias /icons/ «C:/usr/local/apache/icons/»
И дальше, следующей строкой добавляйте Alias на любую папку, например для нашей папки C:/Progs, Alias будет выглядеть так:
Alias /progs/ «C:/Progs/»
Теперь, когда посетитель зайдет по адресу http://90.0.0.12/progs/ то он попадёт в вашу директорию C:/Progs/! Так же можно сделать Alias’ы на бесконечное кол-во папок.