
- •Принципы работы арасне
- •Директивы сервера
- •Блочные директивы
- •Запуск нескольких экземпляров Apache
- •Виртуальные хосты
- •Управление виртуальными хостами
- •Перезапуск Apache
- •Использование файлов .Htaccess
- •Общий шлюзовый интерфейс (cgi)
- •Установка переменных среды
- •Браузеры
- •Обработчики
- •Аутентификация
- •Команды allow и deny
- •Выбор языка
- •Поддержка русскоязычных кодировок,
- •Переадресация
- •Сенсорные изображения
- •Кэширование
- •Var Значение этого атрибута — имя переменной.
Команды allow и deny
С помощью этих команд можно разрешать или запрещать доступ из конкретных IP-адресов. Порядок выполнения команд allow и deny определяется директивой order:
order allow, deny
Это значит, что доступ клиенту, который указан в команде allow, разрешен, если только этот клиент не упомянут в deny. Если ни в одной из этих команд клиент не указан, то доступ ему запрещается. Есть еще одна возможность:
order mutual-failure
Параметр mutual-failure означает, что если клиент указан в allow и не указан в deny, то доступ ему разрешается; в противном случае доступ запрещается. Можно задать команду:
allow from all
которая всем разрешает доступ. Можно также задать
allow from 123.156
deny from all
Эти команды запрещают доступ всем пользователям, кроме тех, IP-адреса которых начинаются с комбинации 123.156.
Можно также использовать доменные имена:
allow from abed. corn
Это команда разрешает доступ с узлов abcd.com, ef.abcd.com, но не с узла noabcd.com.
Команды deny from и allow from можно использовать для управления доступом со стороны пользовательских агентов, т.е. браузеров. Для этого используются команды типа:
deny from abcd.com user-agent Mozilla/2
Благих намерений, однако, недостаточно: перед тем, как хоть сколько-нибудь довериться набору правил доступа, эти правила желательно тщательно проверить.
Выбор языка
Apache способен изменять содержимое возвращаемого файла в соответствии с особенностями клиента. Чтобы продемонстрировать такую возможность, необходимо иметь html-документы на различных языках. Каждому файлу необходимо присвоить соответствующее расширение: .еп - английская версия . it - итальянская версия .ru - русская версия
Т.е. итальянская версия файла, например, будет называться index.html.it (можно index.it.html). Теперь достаточно указать в файле httpd.conf набор директив: AddLanguage it .it AddLanguage en .en AddLanguage ru .ni
Тогда на клиентской машине (например в Netscape) при выборе языка Italian из списка General Preferences меню Options будет выводиться итальянская версия документа.
Можно также установить приоритет языков на стороне сервера. Для этого используется директива LanguagePriority. Если в файле конфигурации определена директива: LanguagePriority ru it en
а в браузере приоритет языков отключен, то по умолчанию будет использоваться русский язык.
Поддержка русскоязычных кодировок,
Исторически сложилось, что в России распространены несколько русскоязычных кодировок, в основном ориентированных на разные платформы. Наиболее известные из них:
КОИ-8
8 - битовая кодировка по ГОСТ
Microsoft Code Page 866 ("Альтернативная")
кодировка, используемая в MS-DOS
ISO-8859-5
кодировка, утвержденная международной организацией по стандартизации
Microsoft Code Page 1251 ("Windows")
кодировка, используемая в Microsoft Windows.
Специалисты утверждают что всего в России имеют хождение II кодировок русского алфавита.
Если WWW сервер ориентирован на использование внутри организации или его пользователями будет являться ограниченный круг людей с однотипными рабочими местами, можно ограничиться одной кодировкой русскоязычной информации на сервере.
Сложности возникают, если необходимо расширить круг клиентов сервера. Вам необходимо будет организовать поддержку нескольких кодовых страниц для русскоязычных документов. Приведенный выше список из четырех кодировок удовлетворит более 99% всех возможных абонентов сервера.
Вообще говоря, в составе языка HTML имеются теги, определяющие кодировку документа и должные позволить корректно прочитать документ в любой кодировке.
Для поддержки нескольких кодовых страниц применяется множество методов, которые можно разбить на две группы:
• использование файлов - копий одного документа в разных кодировках
• динамическое преобразование документов из кодировки, в которой они лежат на сервере, в кодировку, поддерживаемую WWW - клиентом.
В первом случае, на сервере физически присутствуют все файлы во всех поддерживаемых кодировках.
Во втором случае, доступ к документам осуществляется через дополнительную программу - перекодировщик, динамически перекодирующую документы сервера в кодировку WWW - клиента. Эта программа может быть CGI - программой, через которую всегда осуществляется доступ к русскоязычной части сервера. На вход такой программе передается реальный путь документа и кодировка WWW - клиента, в которую нужно перекодировать указанный документ.
Программа - перекодировщик может также располагаться между WWW -клиентом и сервером. Однако здесь возникает проблема с перекодировкой всех данных, включая графику, видео, аудио и других нетекстовых материалов. Для ее решения перекодировщику придается дополнительный интеллект - определять тип передаваемых данных по заголовку MIME и решать, перекодировать документ или нет, на основе его типа.
В русской версии Apache есть поддержка перекодировки средствами сервера. Для этого используется директива CharsetRecodeTable.
CharsetRecodeTable <кодировка1> <кодировка2> <таблица 1-2> <таблица2-1>
Пример:
CharsetRecodeTable koi8-r ISO-8859-5 /usr/local/apache/conf/tables/russian/koi-iso.tab CharsetRecodeTable koi8-r ibm866 /usr/local/apache/conf/tables/nissian/koi-alt.tab CharsetRecodeTable koi8-r Windows-1251 /usr/local/apache/conf/tables/russian/koi-win.tab
Индексация
Если в каталоге .../htdocs нет файла index.html, Apache создает файл под названием "Index of/", в котором "/" означает каталог DocumentRoot. Для большинства случаев, этого, без сомнения, будет достаточно. Но поскольку слепленный на скорую руку индекс — первое, что видит клиент, то, скорее всего, целесообразно будет создать что-нибудь поприличнее.
Составление улучшенных индексов в Apache
Способов достичь этой цели существует великое множество. В Apache есть специальные директивы для настройки индексного файла. Ключевой директивой здесь является Fancyindexing.
Fancyindexing <оп или off>
Эта директива задает применение расширенной индексации, при использовании которой можно задать специальный текст описания как отдельных файлов, так и списка. С помощью директивы indexignore можно исключить файлы из списка. В приведенном ниже примере с помощью директивы Indexignore отключается просмотр каталога /icons:
<Directory ../htdocs>
Fancyindexing on
Indexignore /icons
<Directory>
Indexignore <файл1 файл2 . . . >
В директиве Indexignore приводится список имен файлов (допустимо использование метасимволов). Использование нескольких директив indexignore не заменяют друг друга, а добавляют файлы в это,т список. По умолчанию список включает символ обозначения текущего каталога — ".".
Можно придать странице более привлекательный внешний вид — в противном случае вряд ли можно добиться успеха в Web. Для этого с помощью директивы Add icon можно снабдить имена файлов значками. В каталоге Apache .../icons значков для таких целей более чем достаточно.
Addicon <имя_значка имя_файла>
В этой директиве в качестве первого аргумента указывается имя значка. За ним следуют расширения имен файлов, к которым его следует добавить в индексе. Можно снабдить значками подкаталоги DocumentRoot с помощью символов ^directory^ или обеспечить надлежащее форматирование пустых строк указанием символов ^BLANKICON^
Не все броузеры могут отображать значки. Для таких броузеров можно предложить вместе с именем файла значка текстовую альтернативу: Addicon ("DIR", icons/burst.gif) ""DIRECTORY"" Если указана эта строка, вместо значка burst будет отображаться слово DIR.
Еще одна директива, которая используется при создании индекса - это AddDescriptiom.
AddDescription <строка файл1 файл2. . . >
В директиве AddDescription в двойных кавычках указывается строка описания, за которой следуют имена файлов или метасимволы.
Можно также действовать более тонко и упорядочить наши значки по М1МЕ-типам, используя директиву AddiconByType.
AddIconByType<значок тип_т1те1 тип_mlme2 ...>
В директиве AddIconByType указывается имя файла значка, за которым следует список mime-типов. Apache ищет элемент этого типа в файле mime.types — либо с метасимволом, либо без него.
AddIconByEncoding<значок nnme_кодирование1 lnlme_кодированиеt..>
В этой директиве указывается имя файла значка, за которым следует список методов кодирования MIME. Например, файлы x-compress можно снабдить значками с помощью директивы:
AddIconByEncoding (СОМР, icons/d.gif) application/x-compress
Можно задать верхние и нижние колонтитулы в наших индексах с помощью директив HeaderName и ReadmeName.
HeaderName <имя-файла>
Аргумент имя-файла задает имя файла, содержимое которого включается в заголовок индекса. Это имя файла задается относительно индексируемого каталога. Apache пытается включить в индекс содержимое файла имя-файла.hml, а если такой файл не найден, то содержимое текстового файла имя-файла.
ReadmeName <имя-файла>
Аргумент имя-файла задает имя файла, содержимое которого включается в нижний колонтитул индекса. Это имя файла задается относительно индексируемого каталога. Apache пытается включить в индекс содержимое имя-файла.htтl, а если такой файл не найден, то содержимое текстового файла имя-файла.
Так как файлы HEADER и README могут содержать HTML-сценарии, то при желании можно сделать так, чтобы перечень содержимого каталога содержал различные интерактивные штучки. Кроме того, с помощью директивы indexOptions можно попробовать организовать более тонкое управление индексом:
IndexOptions <опция опция. . . >
Можно указывать следующие опции:
FancyIndexing
Включение расширенной индексации каталогов.
IconsAreLinks
При задании этой опции в гиперссылку в расширенном индексе вместе с именем файла будут включаться значки. ScanHTMLTitles
При задании этой опции для создания расширенного индекса будут извлекаться заголовки из HTML-документа. Если файл не имеет описания, назначенного ему директивой AddDescription, Apache считываетиз всех документов содержимое тегов <title>. это требует больших затрат ресурсов центрального процессора и жесткого диска.
SuppressLastModified
Отмена отображения даты последней модификации в расширенном индексе.
SuppressSize
Отмена отображения объема файла в расширенном индексе.
SuppressDescription
Отмена отображения описания файла в расширенном индексе. По умолчанию ни одна из опций не включена. Если для каталога указаны несколько директив indexOptions, то для каждого подкаталога используются установки той директивы, которая конкретно применена для данного подкаталога; опции не сливаются. Рассмотрим пример индексного каталога. Файл конфигурации выглядит следующим образом:
#Файл ../conf/httpd.conf
User nobody
Group nobody
ServerName localhost
AccessConfig /dev/null
ResourceConfig /dev/null
ServerName localhost
ServerAdmin root@localhost
DocumentRoot/usr/local/apache/htdocs
ErrorLog/usr/local/cipache/logs/error_log
TransferLog/iisr/local/apache/logs/access_log
<Directory/usr/loccil/apache/htdocs>
Fancyindexing on
AddDescription "HTML-документ" *.html
AddDescription "Рисунок GIF" *.gif
AddDescription "Рисунок JPEG" *.jpg
AddDescription "Звуковой файл" *.wav
AddIconicons/folder.gif^^DIRECTORY^^
AddIcon icons/image1 -gif-gif
AddIcon icons/image2.gif.jpg
AddIcon icons/image1.gif-gif
AddIcon icons/layout, gif.html
AddIcon icons/sound I .gif.-wav
AddIcon icons/sound2.gif.mid
</Directory>
Ниже приведен результат обращения к каталогу /usr/local/apache/htdocs при такой конфигурации сервера.
Рис. 1. Пример индексного каталога