рефераты рефераты
Главная страница > Реферат: Работа с Web-сервером Russian Apache  
Реферат: Работа с Web-сервером Russian Apache
Главная страница
Новости библиотеки
Форма поиска
Авторизация




 
Статистика
рефераты
Последние новости

Реферат: Работа с 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

рефераты
Новости