Чтение онлайн

ЖАНРЫ

Linux-сервер своими руками

Колисниченко Денис Николаевич

Шрифт:

Redirect. Используйте директиву Redirect, когда нужно перенести документы в другой каталог или на другой сервер. Например, вам нужно перенести данные из каталога /users/den в каталог /den. Если при этом старый URL-адрес былто новый станетИспользуйте для этого следующую директиву:

Redirect /users/den /den

Можно также перенаправить запрос на другой сервер:

Redirect /users/den/ www.den.domain.com

При этом допускается использование как нового, так и старого URL-адреса.

Alias — с помощью директивы Alias можно предоставить доступ не только к файлам, находящимся в каталоге, указанном директивой DocumentRoot и его подкаталогах, но и в других каталогах. По умолчанию определен только псевдоним для каталога /icons.

ScriptAlias — аналогична

директиве Alias, но позволяет задать месторасположение каталога для CGI-сценариев.

AddType — с помощью этой директивы можно добавить новый MIME-тип, который не указан в файле apache-mime, types.

AddHandler и Action. Директива AddHandler позволяет сопоставить определенному MIME-типу какой-нибудь обработчик. А с помощью директивы Action можно определить какое-нибудь действие для обработчика. Например, вы можете запустить какую-нибудь программу для обработки файла данного типа. Использование этих директив, я думаю, лучше всего продемонстрировать на примере (см. листинг 12.2).

Листинг 12.2. Применение директив Add Handler и Action

AddHandler text/dhtml dhtml

Action text/dhtml /cgi-bin/dhtml-parse

ErrorDocument — директива, сопоставляющая коды ошибок сервера URL-адресам на этом же сервере.

Теперь рассмотрим директивы управления доступом к отдельным каталогам. Данные директивы очень похожи на блочные директивы сервера ProFTPD, которые обсуждались в предыдущей главе.

Directory — обычно определяет свойства каталога (см. листинг 12.3).

Листинг 12.3. Директива Directory

<Directory />

Options Indexes Includes FollowSymLinks

AllowOverride None

</Directory>

Свойства каталога можно указывать в директиве Directory или в файле .htaccess, который находится в том каталоге, для которого необходимо установить нужные параметры.

В блоке Directory могут находиться директивы управления доступом. К ним относятся директивы AllowOverride, Options, Limit. Рассмотрим по порядку все эти директивы. Директива AllowOverride может принимать значения, указанные в табл. 12.1.

Значения директивы AllowOverride Таблица 12.1 

Значение Описание
None Сервер Apache будет игнорировать файлы .htaccess. Рекомендую установить данную опцию, так как это повысит производительность сервера
All Пользователи имеют право переопределять в файлах .htaccess глобальные параметры доступа. Из соображений безопасности лучше не использовать этот режим
Options Разрешает использовать директиву Options
Limit Разрешает использовать директиву Limit
AuthConfig Разрешает использование директив AuthName, AuthType, AuthUserFile и AuthGroupFile
FileInfo Разрешает использовать в файлах .htaccess директивы AddType и AddEncoding

С помощью директивы Option sможно определить функции сервера, которые будут доступны для использования в определяемом каталоге. Данную директиву можно использовать как в файле httpd.conf, так и в файлах .htaccess. Допустимые опции для директивы Options представлены в табл. 12.2.

Limit метод. Директива Limit ограничивает доступ к файлам в определенном каталоге.

Параметр метод определяет метод передачи, например, GET или POST. Директиву Limit можно использовать внутри блоков Directory, Location или в файле .htacccess.

Допустимые опции директивы Options Таблица 12.2

Опция Описание
None He разрешается использование каких-либо функций
All Разрешаются
все функции
FollowSymLinks Разрешается использовать символические ссылки. С точки зрения безопасности не рекомендуется использовать этот режим
SymLinkslfOwnerMatch Разрешается использование символических ссылок, если ссылка указывает на объект, который принадлежит тому же пользователю, что и ссылка
ExecCGI Разрешается выполнение CGI-сценариев
Indexes Если эта опция выключена, сервер не будет передавать содержимое каталога при отсутствии файла index.html
Includes Разрешено использование серверных включений. Рекомендую отключить эту опцию, поскольку это сильно нагружает сервер
IncludesNoExec Разрешает использование серверных включений, но запрещает запуск из них внешних программ

Примечание. В интерфейсе CGI (Common Gateway Interface) определены два метода передачи данных пользователя сценарию: Get и Post. Метод передачи определяется в форме передачи данных. Например:

<form action=script.cgi method=GET>

Сервер Apache позволяет ограничить с помощью директивы Limit передачу данных одним из этих методов.

В блоке Limit можно использовать такие директивы: allow (разрешить), deny (запретить), order (порядок), require (требуется). Директивы allow и deny аналогичны директивам allow и deny файла конфигурации сервера ProFTPD. После директивы allow следует слово from, после которого можно указать IP-адрес, адрес сети, домен или просто имя компьютера. Слово all обозначает все компьютеры. Например, вам требуется запретить доступ всем компьютерам, кроме компьютеров, которые входят в домен ru (см. листинг 12.4).

Листинг 12.4. Директивы allow, deny

order deny, allow

deny from all

allow from ru

Следующий пример показывает, как разрешить доступ компьютерам только из вашей сети (см. листинг 12.5). Пусть, при этом, ваша сеть имеет адрес 192.168.1.0

Листинг 12.5. Разрешения доступа подсети 192.168.1.0

order deny, allow

deny from all

allow from 192.168.1.

Директива order определяет порядок выполнения директив allow и deny. Кроме значений allow, deny и deny, allow, директива order может содержать значение mutual-failure. В этом случае доступ будет отказан всем компьютерам, которые явно не указаны в списке allow.

Директиву require можно использовать для защиты каталога паролем. После названия директивы должен следовать список элементов: имена пользователей, групп, которые заданы в директивах AuthUserFile и AuthGroupFile. Можно использовать параметр valid-user, который укажет серверу предоставить доступ любому пользователю, имя которого имеется в директиве AuthUserFile, если он введет правильный пароль. Пример использования директив Limit, require, AuthUserFile приведен в листинге 12.6.

Листинг 12.6. Использование директивы require

<Directory *>

 AuthUserFile /var/secure/.htpasswd

 AuthName Security

 AuthType Basic

 <Limit GET>

order deny,allow

deny form all

allow from mydomain.ru

require valid-user

 </Limit>

</Directory>

Поделиться с друзьями: