Хокинс С. - Администрирование Web-сервера Apache и руководст
.pdfЧасть IV
Приложения
Вэтой части...
A.Основные директивы
Б.Прочие директивы
B. Концепция протокола TCP/IP
Г. Преобразование имен в IP адреса
Д. Решение проблем, возникающих при работе сети Е. Концепция Unix
Ж. Концепция WINDOWS NT
3.Коды состояния HTTP
И.Регулярные выражения К. Интерфейс mod_perl API Л. Операторы языка РНР
|
Приложение |
|
А |
ОСНОВНЫЕ |
ДИРЕКТИВЫ |
Вэтомприложении... |
|
А.1. Введение |
184 |
А.2. Основные директивы |
184 |
А.1. Введение
Этот раздел содержит сведения о синтаксисе и использовании основных директив сервера Apache. Основные концепции и использование директив можно найти в предметном указателе.
А.2. Основные директивы
А.2.1. Директива AccessConfig
Синтаксис: |
AccessConfig |
имя файла |
Умолчание: |
AccessConfig |
conf/access.conf |
Контекст: |
конфигурирование сервера, виртуальный узел |
Эта директива используется для объявления файла, содержащего дополнительные директивы. Сервер считывает этот файл после завершения чтения файла ResourceConfig. Имя файла задается относительно каталога ServerRoot.
Чтобы сервер Apache считывал некоторое количество дополнительных директив из файла site_specific, хранящегося в каталоге conf, включите в файл Resource_Config следую щую команду:
AccessConfig conf/site specific
Чтобы отключить эту возможность, введите команду:
AccessConfig /dev/null
184 |
Часть IV. Приложения |
А.2.2. Директива AccessFileName
Синтаксис: |
AccessFileName имя файла |
Умолчание: |
AccessFileName .htaccess |
Контекст: |
конфигурирование сервера, виртуальный узел |
Эта директива задает имя файла, в котором хранится список управления доступом. Сервер будет искать файл с таким именем в каждом каталоге, находящемся на пути к до кументу, предполагая, что файлы управления доступом для этого каталога запущены.
Чтобы задать имя файла, хранящего спецификации доступа Apache как .htaccess, необходимо за дать директиву следующего вида:
AccessFileName |
.htaccess |
|
|
|
|
||||
' |
Н |
а |
п |
р |
и |
м |
е |
р |
,когдасерверполучаетзапроскфайлу/usr/local/w |
тиве, то чтобы проверить права и вернуть требующийся файл, сервер будет проверять последовательно ; директивы, имеющиеся в следующих файлах:
/usr/.htaccess
/usr/local/.htaccess
/usr/local/web/.htaccess
Очевидно, что последовательная проверка всех этих каталогов влечет за собой деградацию производи тельности. Эту возможность можно глобально отключить следующей директивой:
<Directory> AllowOverride None
</Directory>
A.2.3. Директива AddModule
Синтаксис: |
AddModule |
модуль модуль . . . |
Контекст: |
конфигурирование сервера |
|
Совместимость: |
директива AddModule имеется только для сервера Apache версии |
1.2 и выше Эта директива может быть использована для активизации модулей, которые были
скомпилированы, но в данный момент не используются. Чтобы очистить список ак тивных модулей сервера, принятый по умолчанию, воспользуйтесь директивой ClearModuleList.
Пример
Для активизации использования модуля mod_peri задайте следующую директиву:
AddModulemod_perl
А.2.4. Директива AllowOverride
Синтаксис: |
AllowOverride override override . . . |
Умолчание: |
AllowOverride All |
Контекст: |
каталог |
Эта директива влияет на действие файла .htaccess или любого другого файла управления доступом, определенного директивой AccessFileName. В зависимости от значения переменной override эта директива будет влиять на управление доступом одним из перечисленных в табл. АЛ способов.
Приложение А. Основные директивы |
185 |
Таблица А.1. Влияние на управление доступом значения переменной override
Значение переменной |
Override |
Действие |
None |
|
Сервер не считывает файл. |
All |
|
Сервер будет реагировать на все директивы. |
AuthConfig |
|
Активизирует использование директив санкциони |
|
|
рования доступа (AuthDBMGroupFile, |
|
|
AuthDBMUserFile, AuthGroupFile, AuthName, |
|
|
AuthType, AuthUserFile, require и Т.Д.). |
FileInfo |
|
Активизирует использование директив, контроли |
|
|
рующих ТИПЫ документов (AddEncoding, |
|
|
AddLanguage, AddType, DefaultType, |
|
|
ErrorDocument, LanguagePriority). |
Indexes |
Активизирует использование директив, контролирую |
|
|
|
щих индексирование каталогов (AddDescription, |
|
|
AddIcon, AddI conByEncoding, AddIconByType, |
|
|
DefaultIcon, DirectoryIndex, FancyIndexing, |
|
|
HeaderName, IndexIgnore, IndexOptions, |
|
|
ReadmeName). |
Limit |
|
Активизирует использование директив, контроли |
|
|
рующих доступ к узлу (allow, deny и order). |
Options |
|
Активизирует использование директив, контролирую |
|
|
щих возможности каталогов (Options, XBitHack). |
А.2.5. Директива AuthName
Синтаксис: |
AuthName |
область санкций |
Контекст: |
каталог, |
.htaccess |
Перекрытие: |
AuthConfig |
Эта директива предназначена для установки имен области санкций для каталога. Об ласть санкций предоставляется клиенту таким образом, что пользователи будут знать, ка кие вводить имя пользователя и пароль. Директива всегда используется совместно с дирек тивами AuthConfig, require и комбинацией директив AuthUserFile и AuthGroupFile.
Пример
Для спецификации области санкций business_a необходимо задать следующую директиву:
AuthName business_a
А.2.6. Директива AuthType
Синтаксис: AuthType тип Контекст: каталог, .htaccess Перекрытие: AuthConfmg
Эта директива устанавливает тип идентификации пользователя для каталога. В на стоящее время единственным возможным значением параметра тип является значе ние Basic. Директива используется совместно с директивами AuthName, require и комбинацией директив AuthUserFile и AuthGroupFile.
186 |
Часть IV. Приложения |
Чтобы задать тип идентификации Basic, воспользуйтесь следующей директивой:
AuthType Basic
А.2.7.ДирективаBindAddress
Синтаксис: |
BindAddress |
saddr |
Умолчание: |
BindAddress |
* |
Контекст: |
конфигурирование сервера |
Unix сервер может быть сконфигурирован для прослушивания соединений по всем IP адресам сервера сразу или только по одному определенному IP адресу. Возможные значения параметра saddr перечислены в табл. А.2.
ТаблицаА.2. Значенияпараметра saddr
Параметр |
Значение |
|
Прослушиватьсоединенияпо всемIP адресам. |
<IР адрес> |
Прослушивать соединения только по указанному IP адресу. |
<полное имя домена> |
Прослушивать соединения только по указанному домену. |
Примечание
Cпомощью этойдирективыреализуется одинизметодов виртуальногохостинга. Детально виртуальный хостингописанв главе5,"Хостингнескольких Web узлов".
А.2.8. Директива ClearModuleList
Синтаксис: |
ClearModuleList |
Контекст: |
конфигурирование сервера |
Совместимость: |
директива ClearModuleList присутствует, начиная с версии |
|
сервера Apache 1.2 |
Сервер имеет предопределенный список активных модулей. Для того, чтобы очи стить этот список, и предназначена директива ClearM oduleList. После использова ния этой директивы необходимо с помощью директивы AddModule составить альтер нативный список модулей.
Для очистки встроенного списка активных модулей, задайте следующую директиву:
ClearModuleList
А.2.9. Директива DefaultType
Синтаксис: |
DefaultType |
mime mun |
Умолчание: |
DefaultType |
text/html |
Контекст: |
конфигурирование сервера, виртуальный узел, каталоги, файл |
|
|
.htaccess |
|
Перекрытие: |
Filelnfo |
|
Сервер Apache должен иметь возможность сообщать клиентам МIMЕ тип документов, которые он рассылает даже тогда, когда тип документа из его расширения не ясен. Эта ди
Приложение А. Основные директивы |
187 |
ректива позволяет пользователю задавать тип документа по умолчанию, который будет ис пользоваться тогда, когда сервер не сможет найти более подходящее решение.
Чтобы задать в качестве типа по умолчанию тип txt/html, воспользуемся директивой:
DefaultType text/html
А.2.10. Директива <Directory>
Синтаксис: <Directory каталогу . . . </Directory> Контекст: конфигурирование сервера, виртуальный узел
Директивы, которые применяются для объединения других директив в группы, ко торые будут применяться только для определенного каталога и их подкаталогов. Обра тите внимание на то, что для обозначения любого одиночного символа или группы символов, в этой директиве можно использовать групповые символы "*" и "?". Более подробно об ограничении области действия директив можно узнать в главе 1, "Основные концепции". Спецификации каталогов не могут быть вложенными. Даже в случае, когда множественные разделы каталогов совпадают с каталогом или родитель ским каталогом документа, директивы применяются, начиная с самого короткого со ответствия. Следует напомнить также, что это имеет отношение и к директивам, на ходящимся в файле .htaccess.
Пример
Чтобы область действия директивы DirectiveА (совершенно абстрактной) распространялась на ка талог /home/site2 и егоподкаталоги, воспользуйтесь следующей конструкцией:
<Directory /home/site2> DirectiveA
<Directory>
A.2.11. Директива DocumentRoot
Синтаксис: |
DocumentRoot каталог имя файла |
Умолчание: |
DocumentRoot /usr/local/etc/httpd/htdocs |
Контекст: |
конфигурирование сервера, виртуальный узел |
Эта директива позволяет задавать корневой каталог, отличный от стандартного. Например, если в качестве DocumentRoot объявлен каталог /usr/businessa, это бу дет Значить, что URL http://www.businessa.com/index.html относится к документу /usr/businessa/index.html.
Каталог, определенный с помощью этой директивы является ключевым, так как многие другие директивы позволяют задавать путь относительно каталога DocumentRoot.
Примечание
При объявлении пути DocumentRoot указание замыкающей косой черты является ошибкой (например/somedir/).
188 |
Часть IV. Приложения |
Чтобы объявить в качестве корневого каталога вашего Web узла каталог /usr/businessa, можно воспользоваться следующей директивой.
Documentroot /usr/businessa
А.2.12. Директива ErrorDocument
Синтаксис: |
ErrorDocument код ошибки документ |
Контекст: |
конфигурирование сервера, виртуальный узел, каталоги, файл |
|
.htaccess |
Перекрытие: |
FileInfo |
По умолчанию сервер Apache обрабатывает ошибки, выдавая запрограммирован ные сообщения о них. Эта директива позволяет изменить такое поведение одним из следующих способов:
Для вывода видоизмененного сообщения необходимо задать директиву:
ErrorDocument 403 "Having problems. Come back later"
Пример
Для перенаправления на локальный URL:
ErrorDocument 401 /customer.html
ErrorDocument 404 /cgi bin/ customer.pl
Для перенаправления на внешний URL:
ErrorDocument 500 http://www.blah.com/cgi bin/boo boo
Примечание
При использовании директивы ErrorDocument 401 она должна ссылаться на локальный документ.
А.2.13. Директива ErrorLog
Синтаксис: |
ErrorLog |
имя файла |
Умолчание: |
ErrorLog |
logs/error_log |
Контекст: |
конфигурирование сервера, виртуальный узел |
Эта директива позволяет задать имя регистрационного файла, в который будут за писываться диагностические сообщения об ошибках сервера. В нем может быть ука зан абсолютный путь (если спецификация пути начинается с символа "/", что означа ет путь определения относительно корневого каталога) или относительный путь отно сительно каталога ServerRoot.
Приложение А. Основные директивы |
189 |
Задать в качестве каталога регистрации ошибок каталог /var/adm/logs/http.log можно с по мощьюкоманды:
ErrorLog /var/adm/logs/http.log
A.2.14. Директива <Files>
Синтаксис: |
<Files имя файла>. . . </Files> |
Контекст: |
конфигурирование сервера, виртуальный узел, файл |
|
.htaccess |
Совместимость: |
версия 1.2 и выше |
Эта директива позволяет осуществлять управление доступом по имени файла. Директи вы, заключенные между директивами <Files>, будут иметь воздействие только на указан ный файл. Есть директивы аналогичного характера и для каталогов URL. Секции <Files> обрабатываются в порядке их появления в конфигурационном файле после считывания секций <Directory> и файлов .htaccess, но до секций <Location>.
Имя файла может задаваться точным литеральным именем файла (например text/.html) или комбинацией литеральных и групповых символов (например text?/html, te*.html).
Чтобы директива DirectiveA воздействовала на все файлы, начинающиеся с последовательности символов srh, обратитесь к помощи следующей директивы:
<Files srh*> DirectiveA
<Files>
A.2.15. Директива Group
Синтаксис: |
Group Unix группа |
Умолчание: |
Group # 1 |
Контекст: |
конфигурирование сервера, виртуальный узел |
Эта директива позволяет задать системную группу Unix (как видно из файла /etc/group), которой будет пользоваться сервер при обслуживании запросов.
Чтобы создать группу httpg, можно воспользоваться следующей директивой: group httpg
Примечание
Из соображений безопасности рекомендуется создать группу специально для обслуживания запросов : сервером Apache.
А.2.16. Директива HostNameLookups
Синтаксис: |
HostNameLookups |
on | off |
Умолчание: |
HostNameLookups |
on |
Контекст: |
конфигурирование сервера, виртуальный узел |
190 |
Часть IV. Приложения |
Эта директива необходима для включения режима просмотра базы DNS. В этом случае в регистрационных файлах вместо IP адресов можно использовать имена узлов. Необходимо заметить, что процесс просмотра DNS информации приводит к сущест венному снижению производительности сервера.
Чтобы немного"перекрыть кислород"вашему серверу, достаточновоспользоваться следующейдирективой:
HostNameLookups on
А.2.17. Директива IdentityCheck
Синтаксис: |
IdentityCheck |
on \ off |
Умолчание: |
IdentityCheck |
off |
Контекст: |
конфигурирование сервера, виртуа льный узел |
Эта директива позволяет регистрировать имена пользователей в соответствии со стандартом RFC 1413 при каждом подключении. Заметим, что для того, чтобы это ра ботало эффективно, на клиентской машине должен работать сервис identd или что то подобное с аналогичными функциями. Значение параметра boolean должно быть установлено в on или off.
Для включения режима идентификации пользователя достаточно:
IdentityCheck on
А.2.18. Директива <IfModule>
Синтаксис: <Ifmodule [ ! ]имя модуля> ... </IfModule> Умолчание: нет Контекст: все
Эта директива позволяет пользователю задавать или отменять выполнение директив в зависимости от наличия или отсутствия модуля. Директивы, находящиеся внутри опера торной скобки <Ifmodule имя модуля>, рассматриваются только тогда, когда модуль имя модуля прикомпилирован к серверу, если модуль с указанным именем не прикомпилиро ван, директивы будут проигнорированы. Указание перед именем модуля знака восклица ния инвертирует действие директивы. (Например указание !modulea означает, что директи вы будут просматриваться только в том случае, когда модуль modulea отсутствует.)
А.2.19. Директива KeepAlive
Синтаксис: (Apache 1.1) KeepAlive макс запрос Умолчание: (Apache 1.1) KeepAlive 5 Синтаксис: (Apache 1.2) KeepAlive on/off
Умолчание: умолчание: (Apache 1.2) KeepAlive On Контекст: конфигурирование сервера
В сервере Apache 1.1, эта директива позволяет задать верхний предел числа запро сов KeepAlive на одного клиента. Для сервера Apache версии 1.2 и выше значение может быть также установлено в On, что позволяет делать устойчивые соединения, или O f f , что отключает такую возможность. См. директиву MaxKeepAliveRequests.
Приложение А. Основные директивы |
191 |