Колисниченко Д.Н. - Linux-сервер своими руками (1077324), страница 68
Текст из файла (страница 68)
листинг 12.1), но для этого нужноиспользовать директиву Addlcon вместо AddlconByType.Листинг 12.1. Фрагмент файла httpd.confAddlconByType ( V X D , / i c o n s / m o v i e . g i f ) v i d e o / *Addlcon / i c o n s / b i n a r y . g i f .bin .exeПервая директива в листинге сопоставляет типу video значок/ i c o n s / m o v i e . g i f . Вторая директива сопоставляет бинарным файлам *.Ыпи *.ехе значок / i c o n s / b i n a r y . g i f . Значок по умолчанию задается директивой Defaultlcon.DefaultType.
Если запрашиваемый клиентом тип не соответствует ни одному изMIME-типов, используется MIME-тип, указанный в директиве DefaultType.AddEncoding. Для сокращения времени передачи файла клиентам используетсясжатие данных. Браузеры имеют встроенные программы для распаковки,запускаемые при получении архивов определенных MIME-типов. Именноэти MIME-типы и указываются в директиве AddEncoding.AddLanguage. В большинстве браузеров можно задать предпочитаемый язык.Благодаря этому вы можете предоставлять документы на разных языках.285Сервер ApacheДиректива AddLanguage сопоставляет расширение файла аббревиатуре языка.Для русского языка используется аббревиатура ги, для английского — еп.
Приэтом в корневом каталоге вашего сервера могут находиться несколько индексных файлов на разных языках. Например, для русского языка нужно использовать имя файла index. html. ru, а для английского — index. html. en.LanguagePriority. Если на вашем сервере размещены документы на разных языках, то с помощью директивы LanguagePriority можно указать приоритетыразличных языков. Например, вы установили директиву LanguagePriority так:L a n g u a g e P r i o r i t y en ruКлиент вводит в строке адреса своего браузера адрес http://www.server.com//.Если в свойствах браузера имеется возможность задать предпочитаемый язык, товозвращен будет файл на нужном языке, если такой существует.
Если браузерклиента не поддерживает такую возможность, будет возвращен файл на языке,имеющим наболее высокий приоритет. В рассмотренном случае (см. пример) этоанглийский язык. Если файл на нужном языке, например, на немецком, несуществует, то будет возвращен файл на английском языке. Для того, чтобы серверподдерживал нужный вам язык, предварительно установите правильное значениедирективы AddLanguage.Redirect. Используйте директиву Redirect, когда нужно перенести документы вдругой каталог или на другой сервер. Например, вам нужно перенестиданные из каталога /users/den в каталог /den. Если при этом старыйURL-адрес был http://www.host.com/users/den, то новый станетhttp://www.host.com/den/.
Используйте для этого следующую директиву:Redirect / u s e r s / d e n /denМожно также перенаправить запрос на другой сервер:Redirect /users/den/ www.den.domain.comПри этом допускается использование как нового, так и старого URLадреса.Alias — с помощью директивы Alias можно предоставить доступ не только кфайлам, находящимся в каталоге, указанном директивой DocumentRoot и егоподкаталогах, но и в других каталогах. По умолчанию определен толькопсевдоним для каталога /icons.ScriptAlias — аналогична директиве Alias, но позволяет задать месторасположение каталога для CGI-сценариев.AddType — с помощью этой директивы можно добавить новый МШЕ-тип,который не указан в файле apache-mime, types.AddHandler и Action.
Директива AddHandler позволяет сопоставить определенному MIME-типу какой-нибудь обработчик. А с помощью директивы Actionможно определить какое-нибудь действие для обработчика. Например, выможете запустить какую-нибудь программу для обработки файла данноготипа. Использование этих директив, я думаю, лучше всего продемонстрировать на примере (см.
листинг 12.2).286Сервер ApacheЛистинг 12.2. Применение директив AddHandler и ActionAddHandler text/dhtml dhtmlAction text/dhtml /cgi-bin/dhtml-parseErrorDocument — директива, сопоставляющая коды ошибок сервера URL-адресам на этом же сервере.Теперь рассмотрим директивы управления доступом к отдельным каталогам. Данные директивы очень похожи на блочные директивы сервераProFTPD, которые обсуждались в предыдущей главе.Directory — обычно определяет свойства каталога (см. листинг 12.3).Листинг 12.3.
Директива Directory<Directory />Options Indexes Includes FollowSymLinksAllowOverride None</Directory>Свойства каталога можно указывать в директиве Directory или в файле.htaccess, который находится в том каталоге, для которого необходимоустановить нужные параметры.В блоке Directory могут находиться директивы управления доступом. Кним относятся директивы AllowOverride, Options, Limit. Рассмотрим по порядку все эти директивы. Директива AllowOverride может принимать значения, указанные в табл.
12.1.Значения директивы AllowOverrideЗначениеТаблица 12.1ОписаниеNoneСервер Apache будет игнорировать файлы .htaccess. Рекомендую установить даннуюопцию, так как это повысит производительность сервераAllПользователи имеют право переопределять в файлах .htaccess глобальные параметрыдоступа. Из соображений безопасности лучше не использовать этот режимOptionsРазрешает использовать директиву OptionsLimitРазрешает использовать директиву LimitAuthConfigРазрешает использование директив AuthName, AuthType, AuthUserFile и AuthGroupFileFilelnfoРазрешает использовать в файлах .htaccess директивы AddType и AddEncodingС помощью директивы Options можно определить функции сервера,которые будут доступны для использования в определяемом каталоге. Данную директиву можно использовать как в файле h t t p d .
c o n f , так и вфайлах . h t a c c e s s . Допустимые опции для директивы Options представлены в табл. 12.2.Limit метод. Директива Limit ограничивает доступ к файлам в определенном каталоге.Параметр метод определяет метод передачи, например, GET или POST.Директиву Limit можно использовать внутри блоков Directory, Location или вфайле .htacccess.287Сервер ApacheДопустимые опции директивы OptionsОпцияТаблица 12.2ОписаниеNoneAllHe разрешается использование каких-либо функцийРазрешаются все функцииFollowSym LinksSymLinkslfOwnerMatchExecCGIIndexesIncludesIncludesNoExecРазрешается использовать символические ссылки.
С точки зрения безопасностине рекомендуется использовать этот режимРазрешается использование символических ссылок, если ссылка указываетна объект, который принадлежит тому же пользователю, что и ссылкаРазрешается выполнение CGI-сценариевЕсли эта опция выключена, сервер не будет передавать содержимое каталогапри отсутствии файла index.htmlРазрешено использование серверных включений. Рекомендую отключить этуопцию, поскольку это сильно нагружает серверРазрешает использование серверных включений, но запрещает запуск из нихвнешних программПримечание.В интерфейсе CGI (Common Gateway Interface) определены два метода передачиданных пользователя сценарию: Get и Post.
Метод передачи определяется в формепередачи данных. Например:<form a c t i o n = s c r i p t . c g i method=GET>Сервер Apache позволяет ограничить с помощью директивы Limit передачу данныходним из этих методов.В блоке Limit можно использовать такие директивы: allow (разрешить),deny (запретить), order (порядок), require (требуется). Директивы allow и denyаналогичны директивам allow и deny файла конфигурации сервера ProFTPD.После директивы allow следует слово from, после которого можно указать IPадрес, адрес сети, домен или просто имя компьютера. Слово all обозначаетвсе компьютеры. Например, вам требуется запретить доступ всем компьютерам, кроме компьютеров, которые входят в домен ш (см. листинг 12.4).Листинг 12.4.order deny,deny fromallow fromДирективы allow, denyallowallruСледующий пример показывает, как разрешить доступ компьютерамтолько из вашей сети (см.
листинг 12.5). Пусть, при этом, ваша сеть имеетадрес 192.168.1.0Листинг 12.5. Разрешения доступа подсети 192.168.1.0order deny, allowdeny from allallow from 192.168.1.Директива order определяет порядок выполнения директив allow и deny.Кроме значений allow, deny и deny, allow, директива order может содержатьзначение mutual-failure. В этом случае доступ будет отказан всем компьютерам, которые явно не указаны в списке allow.288Сервер ApacheДирективу require можно использовать для защиты каталога паролем.После названия директивы должен следовать список элементов: именапользователей, групп, которые заданы в директивах AuthUserFile иAuthGroupFile.
Можно использовать параметр valid-user, который укажет серверу предоставить доступ любому пользователю, имя которого имеется вдирективе AuthUserFile, если он введет правильный пароль. Пример использования директив Limit, require, AuthUserFile приведен в листинге 12.6.Листинг 12.6. Использование директивы require<Directory *>AuthUserFile /var/secure/.htpasswdAuthName SecurityAuthType Basic<Limit GET>order deny,allowdeny form allallow from mydomain.rurequire valid-user</Limit></Directory>В листинге 12.6 для аутентификации используется файл паролей.htpasswd, который можно создать с помощью программы htpasswd.
Директива Limit разрешает доступ к любому каталогу сервера только пользователям домена mydomain.ru.Кроме параметра valid-user допускается использование параметра usersили grpoups. Данные параметры разрешают доступ только определеннымпользователям или группам пользователей. Пример использования параметра users приведен в листинге 12.7.Листинг 12.7. Применения параметра users<Directory / u s e r s >AuthType BasicAuthUserFile /var/users/.htpasswdAuthName UsersDir<Limit GET POST>require users denis igor evg</Limit></Directory>Location — с помощью этой директивы можно задать определенныйURL-адрес, который предназначен для обозначения каталогов, файлов илигрупп файлов.