Реферат: Работа с Web-сервером Russian Apache
Директива ErrorDocument позволяет заменять стандартные сообщения
сервера об ошибках на свои. Например, в случае самой распространенной ошибки -
404 (файл не найден) - считается хорошим тоном выдавать пользователю страницу с
предложением продолжить свой путь по серверу или форму для поиска по узлу.
Реализуется это достаточно просто: в настройках сервера мы убираем знак
комментария со строки
ErrorDocument 404 /missing.html
B корневом каталоге каждого виртуального сервера создаем файл
missing.html. Рекомендуется дать в нем ссылки на основные разделы сервера - и
для удобства пользователей, и для того, чтобы предоставить необходимую
информацию поисковым роботам, индексирующим серверы.
Файл httpd.conf
Конфигурационный файл httpd.conf является основным и содержит
настройки, связанные с работой Web-сервера, виртуальных серверов, а также всех
его программных модулей. Кроме того, именно в нем настраивается перекодирование
русских букв при передаче от сервера к клиенту и обратно.
Директива Port, помещенная в самом начале файла, определяет номер
порта для http-сервера; по умолчанию это 80. При необходимости можно приписать
серверу другой порт или несколько портов, для чего служит директива Listen.
Директива HostnameLookups с параметром on или off включает или,
соответственно, отключает преобразование численных IP-адресов клиентов,
получивших документы с сервера, в доменные имена. Такое преобразование
несколько замедляет работу сервера, но при числе посещений менее 10 000 в сутки
это, как правило, практически не заметно.
Директивы User и Group задают пользователя, который будет
администрировать сервер. С точки зрения безопасности нежелательно указывать
здесь существующего пользователя, имеющего доступ к каким-либо другим ресурсам
или файлам. Лучше создать отдельного пользователя и группу специально для
http-сервера, например:
User www
Group www
Директивы ServerRoot, ErrorLog, CustomLog определяют
соответственно корневой каталог http-сервера, путь к журналу регистрации ошибок
(error_log) и путь к общему журналу обращений к серверу (access_log).
Директива CacheNegotiatedDocs разрешает кэширование документов,
полученных с сервера. По умолчанию этот режим отключен, но, поскольку
пропускная способность отечественных Internet-каналов еще долго будет оставлять
желать лучшего, хорошо бы его включить: тогда пользователю не придется ждать
загрузки картинок при каждом обращении к вашей странице.
Настройка
виртуальных серверов в файле httpd.conf
В большинстве случаев один http-сервер способен обрабатывать
запросы, поступающие на различные, так называемые виртуальные, Web-серверы.
Виртуальные серверы могут иметь как один и тот же IP-адрес, но разные доменные
имена, так и разные IP-адреса. С точки зрения пользователя второй вариант чуть
более предпочтителен, поскольку запрос к серверу, отличающемуся от основного
только доменным именем, должен содержать его имя, а некоторые старые браузеры,
не поддерживающие протокол HTTP/1.1 (например, Microsoft Internet Explorer
2.0), не включают в запрос эту информацию. Однако такие браузеры выходят из
употребления (сейчас их уже менее 0,5% общего числа); с другой стороны,
выделение собственного IP-адреса каждому виртуальному серверу может быть неоправданной
растратой адресного пространства компании.
Для описания адресов и доменных имен виртуальных серверов служат
директивы ServerName, ServerAlias, NameVirtualHost и VirtualHost. Они
необходимы, только если вам нужно установить более одного виртуального сервера.
В листинге 2 приведен фрагмент конфигурационного файла для случая
виртуальных серверов с различными IP-адресами, в листинге 3 - аналогичный
фрагмент для случая, когда серверы различаются только доменным именем.
Директива ServerName, находящаяся вне секций VirtualHost,
определяет имя основного сервера, т. е. сервера, корневой каталог которого
задан директивой DocumentRoot в файле srm.conf. Виртуальные серверы наследуют
настройки основного; при необходимости специальной настройки соответствующие директивы
помещаются в секции VirtualHost, относящейся к данному серверу. Допустимы любые
директивы, которые могут встретиться в файлах httpd.conf и srm.conf, например
DocumentRoot, ErrorLog, CustomLog, Location, ServerAdmin.
Из листинга 3 видно, как используется директива ServerAlias, если
необходимо создать несколько виртуальных серверов с одинаковым содержанием.
После того как вы занесете в конфигурационные файлы информацию об имеющихся на
диске виртуальных серверах (разумеется, они должны быть описаны и в конфигурационных
файлах DNS), можно приступить к последнему шагу настройки Apache-RUS.
Настройка перекодирования русскоязычных документов
Модуль поддержки русских кодировок был разработан в 1996 г.
Дмитрием Крюковым (dvk@stack.net), а с февраля 1997 г. поддерживается рабочей
группой Apache-RUS Team во главе с Алексеем Тутубалиным (lexa@ lexa.ru). За
время своего развития модуль претерпел множество изменений и теперь обладает
практически неограниченными возможностями настройки для любой конкретной
конфигурации.
Инструкции, отвечающие за перекодирование, разделяются
естественным образом на три группы. К первой относятся две директивы,
указывающие, в какой кодировке хранятся файлы на диске: CharsetSourceEnc
<кодировка> и CharsetByExtension <кодировка> <расширение1>
<расширение2>...
Например, файл httpd.conf может содержать строки:
CharsetSourceEnc koi8-r
CharsetByExtension windows-1251 .txt
Такая запись означает, что все файлы хранятся на диске в кодировке
koi8-r; исключение составляют текстовые файлы с расширением txt, для которых
используется Windows-1251.
Если кодировок более одной и документы в каждой кодировке хранятся
в своем каталоге, директивы CharsetSourceEnc помещаются в соответствующие
секции <Location> либо в файлы .htaccsess внутри каталогов.
Вторую группу составляют директивы CharsetDecl, CharsetAlias
CharsetRecodeTable и CharsetWideRecode Table, которые определяют названия
кодировок, их синонимы и таблицы перекодирования. Все они размещаются в секции
<IfModule mod_charset.c> - </IfModule> и в большинстве случаев не
нуждаются в изменении.
В третью, самую многочисленную группу входят директивы, задающие
порядок перекодирования символов от сервера клиенту и обратно.
Принято, чтобы при попадании на русскоязычный сервер пользователь
получал страницу в "своей" кодировке, определяемой автоматически на
основе той информации об операционной системе, которую передает серверу
браузер: например, установив, что пользователь работает в Windows, сервер
выдает ему страницу в кодировке Windows-1251, а установив, что он работает в
Unix, выдает страницу в koi8. Если выбранная таким образом страница не
подходит, клиент может сменить кодировку вручную. Основных схем выбора три: по
префиксу каталога, по имени виртуального сервера и по номеру порта. У каждой из
них есть свои преимущества и свои недостатки.
1) http://www.rmt.ru/koi/document.html
http://www.rmt.ru/win/document.html - выбор кодировки по префиксу
каталога,
2) http://koi.www.rmt.ru/document.html
http://win.www.rmt.ru/document.html - выбор кодировки по имени
сервера,
3) http://www.rmt.ru:8000/document.html
http://www.rmt.ru:8001/document.html - выбор кодировки по порту.
Для организации выбора кодировки по префиксу каталога нужно либо
внести в секцию VirtualHost строку вида
Alias /koi /www/rmt
либо создать в соответствующем каталоге символическую ссылку на
себя:
# cd /www/rmt
# ln -s . koi
Усилия, затрачиваемые на первоначальное конфигурирование,
невелики, но для крупных серверов с разветвленной структурой такая схема не
очень подходит: вряд ли удастся проконтролировать корректность ссылок на разные
страницы узла с внешних серверов, да и за внутренними ссылками проследить не
так-то просто (в большинстве случаев они должны быть относительными).
При выборе кодировки по имени сервера необходимо, чтобы информация
о соответствующих именах была задана в настройках DNS-сервера, обслуживающего
данный домен, а в файл httpd.conf в секцию VirtualHost вносятся строки:
<VirtualHost 193.124.134.3>
ServerName www.rmt.ru
ServerAlias *.www.rmt.ru
...
</VirtualHost>
Если в качестве имени поддомена выступает один из синонимов
названия кодировки (CharsetAlias), то эта кодировка считается кодировкой
клиента. При таком подходе ссылки внутри сервера могут быть любыми, и
единственный недостаток данной схемы в том, что перекодирование не выполняется
для браузеров, не указывающих в запросе имя сервера, - впрочем, их, как уже
говорилось, осталось крайне мало. Если же совместимость со старыми браузерами
категорически необходима, можно назначить каждому поддомену свой IP-адрес.
Чтобы применить выбор по номеру порта, необходимо в файле
httpd.conf удалить директиву Port и снять комментарии со строк
Listen 80
Listen 8100
Listen 8101
Listen 8102
Listen 8103
CharsetByPort koi8-r 8100
CharsetByPort windows-1251 8101
CharsetByPort ibm866 8102
CharsetByPort iso-8859-5 8103
Номера портов не очень важны. В стандартной настройке Apache-RUS
нумерация, как видим, начинается с 8100, но чаще ее начинают с 8000 или 8080.
Данная схема не требует внесения дополнительных записей в DNS и
позволяет работать с виртуальными серверами даже клиентам, которые не
поддерживают протокол HTTP/1.1, - ведь кодировка выбирается исходя из числа,
указывающего на номер порта Web-сервера (по умолчанию это 80). Однако сетевые
брандмауэры иногда запрещают работу с определенными портами, и если таким
брандмауэром защищена сеть клиента, он не сможет установить соединение с вашим
сервером. К сожалению, подобная ситуация возникает чаще, чем хотелось бы.
Страницы: 1, 2, 3 |