Linux: Полное руководство
Шрифт:
Рис. 16.2. Конфигурирование модуля mod_ssl
В дистрибутив Fedora Core включен более удобный конфигуратор system-config-httpd (рис. 16.3).
Рис. 16.3. system-config-httpd
16.8. Каталоги пользователей
Директива UserDir включает поддержку пользовательских каталогов. Эта директива
Сейчас же все чаще используется технология виртуальных серверов, которую мы рассмотрим в следующем пункте, но знать, что такое каталоги пользователей и как с ними работать, тоже не помешает. Тем более что домашние каталоги настраиваются намного быстрее и проще, чем виртуальный сервер — нужно всего лишь определить директиву UserDir и указать местоположение домашних каталогов.
Доступ к файлам, расположенным в этих каталогах, производится с помощью указания регистрационного имени пользователя после имени сервера через тильду-слэш. Например, пусть имя сервера www.server.com, имя пользователя — denis, тогда URL-адрес будет выглядеть так:
16.9. Виртуальный HTTP-сервер
Концепция виртуальных узлов позволяет одному серверу Apache поддерживать несколько сайтов. Пользователи видят отдельные веб-узлы, и получается, что один веб-сервер заменяет несколько. Это очень удобно, если нужно организовать персональные веб-сайты пользователей или собственные узлы подразделений компании, например, develop.mycompany.com.
Сервер Apache можно настроить несколькими способами: либо так, чтобы запускался один сервер, который будет прослушивать все обращения к виртуальным серверам (такой вариант настраивается при помощи директивы VirtualHost), либо запускать отдельный процесс для каждого виртуального сервера (в этом случае применяются директивы Listen и BirdAddress). В этом параграфе я буду рассматривать первый вариант.
Внутри блока директивы VirtualHost можно использовать любые директивы, кроме ServerType, BindAddress, Listen, NameVirtualHost, ServerRoot, TypesConfig, PidFile, MinRequestPerChild, MaxSpareServers, MinSpareServers, так как некоторые из них относятся к основному HTTP-серверу (например, ServerType), а некоторые — ко второму варианту настройки виртуальных серверов и здесь неприемлемы. Обязательно должны присутствовать директивы ServerName, DocumentRoot, ServerAdmin и ErrorLog.
В зависимости от версии и от настроек Apache виртуальные узлы могут прописываться либо в файле
Виртуальные серверы можно идентифицировать по имени или по IP-адресу.
16.9.1. Виртуальные серверы с идентификацией по имени
Идентификация по
Поддержка виртуальных узлов обеспечивается директивами VirtualHost и NameVirtualHost. Если ваша система имеет только один IP-адрес, его нужно указать в директиве NameVirtualHost. Все блоки VirtualHost будут использовать этот IP-адрес.
Внутри блока VirtualHost записывается директива ServerName, задающая доменное имя для создаваемого виртуального сервера. Ее обязательно нужно записать, чтобы избежать поиска службой DNS — вы же не хотите, чтобы при неудачном поиске виртуальный сервер был заблокирован? Другие директивы в блоках VirtualHost описывают параметры каждого виртуального сервера в отдельности (листинг 16.10).
Листинг 16.10. Два виртуальных сервера — www и lib
Если ваша система имеет только один IP-адрес, доступ к основному серверу напрямую будет невозможен: нужно включить его имя (в примере www.dhsilabs.com) в число виртуальных. Эти имена должны быть прописаны в службе DNS. При наличии двух IP-адресов можно один присвоить основному серверу, а другой — виртуальному.
Сервер Apache позволяет использовать несколько доменных имен для доступа к одному серверу, например:
При этом запросы, посланные по IP-адресам, которые присвоены вашим виртуальным узлам, должны соответствовать одному из указанных доменных имен. Чтобы зафиксировать запросы, не соответствующие ни одному из этих имен, нужно с помощью опции default:* создать виртуальный узел, который будет обслуживать такие запросы:
16.9.2. Виртуальные серверы с идентификацией по IP-адресу
В директиве VirtualHost в качестве адресов можно использовать доменные имена, но лучше указывать IP-адрес, причем действительный, а не виртуальный. В этом случае вы не будете зависеть от DNS при разрешении имени. Также потребуется один IP-адрес для вашего основного сервера. Если же распределить все адреса между виртуальными серверами, то нельзя будет получить доступ к основному серверу.