IZONE- http://www.izcity.com/- бесплатный софт, вэб-сервисы, ресурсы для раскрутки, свежие номера журнала "Internet Zone".

Виртуальность

В статье пойдет речь о конфигурировании виртуальных HTTP- и FTP-серверов. В качестве HTTP сервера будет рассмотрен Apache, а создание виртуального FTP-сервера будет происходить с использованием FTP-серверов wu-ftp и ProFTP.

Денис Колесниченко

Виртуальный HTTP-сервер

Концепция виртуальных хостов позволяет Apache поддерживать несколько Web-узлов. Получается, что один Web-сервер заменяет несколько и пользователи видят отдельные Web-узлы. Это очень удобно, если нужно организовать персональные Web-узлы пользователей или собственные Web-узлы подразделений компании, например develop.mycompany.com

Apache можно настроить несколькими способами: чтобы запускался один сервер, который будет прослушивать ВСЕ обращения к виртуальным серверам, или запускать отдельный процесс для каждого виртуального сервера. В первом случае один сервер будет одновременно обслуживать все виртуальные. Если вас интересует такой вариант, нужно настраивать виртуальные сервера с помощью директивы VirtualHost. Настройка отдельных процессов для каждого сервера осуществляется с помощью директивы Listen и BindAddress.

В статье я буду рассматривать именно первый случай. Внутри блока директивы VirtualHost можно использовать любые директивы, кроме ServerType, BindAddress, Listen, NameVirtualHost, ServerRoot, TypesConfig, PidFile, MinRequestPerChild, MaxSpareServers, MinSpareServers, так как некоторые из них относятся к основному HTTP-серверу (например, ServerType), а некоторые - ко второму варианту настройки виртуальных серверов и здесь неприемлемы. Обязательно должны присутствовать директивы ServerName, DocumentRoot, ServerAdmin и ErrorLog

В зависимости от версии и от настроек Apache виртуальные узлы могут прописываться или в файле httpd.conf или в файле vhosts.conf

Виртуальные сервера можно идентифицировать по имени или по IP-адресу.

Виртуальные сервера с идентификацией по имени

Идентификация по имени имеет существенное преимущество перед идентификацией по IP-адресу: вы не ограничены количеством адресов, имеющемся у вас в распоряжении. Вы можете использовать любое количество виртуальных серверов и при этом вам не потребуются дополнительные адреса. Такое возможно благодаря использованию протокола HTTP/1.1. Данный протокол поддерживается всеми современными броузерами.

Поддержка виртуальных хостов обеспечивается директивами VirtualHost и NameVirtualHost. Если ваша система имеет только один IP-адрес, его нужно указать в директиве VirtualHost. Внутри блока директивы VirtualHost записывается директива ServerName. Эта директива задает доменное имя для нашего виртуального сервера. Это обязательно нужно сделать, чтобы избежать поиска службой DNS - мы же не хотим, чтобы при неудачном поиске виртуальный сервер был заблокирован? Все директивы VirtualHost используют один и тот же IP-адрес, заданный директивой NameVirtualHost. В блоке VirtualHost записываются параметры виртуального сервера, причем они записываются для каждого виртуального сервера отдельно.

Пример 1.1. Создадим два виртуальных сервера - www и lib

ServerName den.dhsilabs.com

<NameVirtulaHost 192.168.1.1>

<VirtualHost 192.168.1.1>
 ServerName www.dhsilabs.com
 ServerAdmin webmaster@den.dhsilabs.com
 DocumentRoot /var/httpd/www/html
 ErrorLog /var/https/www/logs/error.log
 TransferLog logs/access.log
</VirtualHost>

<VirtualHost 192.168.1.1>
 ServerName lib.dhsilabs.com
 ServerAdmin webmaster@den.dhsilabs.com
 DocumentRoot /var/httpd/lib/html
 ErrorLog /var/https/lib/logs/error.log
 TransferLog logs/access.log
</VirtualHost>

Если ваша система имеет только один IP-адрес, доступ к основному серверу станет невозможным, то есть вы не сможете использовать его напрямую. Можно основной сервер использовать в качестве виртуального, что я и сделал в примере 1.1.: основной сервер www является виртуальным. При наличии двух IP-адресов можно один присвоить основному серверу, а другой - виртуальным.

Apache позволяет использовать несколько доменных имен для доступа к одному серверу: ServerAlias www.dhsilabs.com www2.dhsilabs.com

Запросы, посланные по IP-адресам, которые присвоены нашим виртуальным хостам, должны соответствовать одному из указанных доменных имен. Чтобы зафиксировать запросы, не соответствующие ни одному их этих имен, нужно с помощью опции default:* создать виртуальный хост, который будет обслуживать такие запросы: <VitrualHost _default_:*>

Обратите внимание на то, что адреса www.dhsilabs.com и lib.dhsilabs.com должны быть прописаны в DNS

Виртуальные сервера с идентификацией по IP-адресу

В директиве VirtualHost в качестве адресов можно использовать доменные имена, но лучше указывать IP-адрес, причем действительный, а не виртуальный. В этом случае вы не будете зависеть от DNS при резолвинге. Также потребуется один IP-адрес для вашего основного сервера. Если распределить все адреса между виртуальными серверами, то нельзя будет получить доступ к основному серверу.

Пример 1.2.

<VitrualHost 192.168.1.2>
 ServerName www.dhsilabs.com
 ServerAdmin webmaster@den.dhsilabs.com
 DocumentRoot /var/httpd/www/html
 ErrorLog /var/https/www/logs/error.log 
</VirtualHost>

<VirtualHost lib.dhsilabs.com>
 ServerName lib.dhsilabs.com
 ServerAdmin webmaster@den.dhsilabs.com
 DocumentRoot /var/httpd/lib/html
 ErrorLog /var/https/lib/logs/error.log
</VirtualHost>

В приведенном примере сконфигурированы два виртуальных сервера и идентификацией по IP-адресу. Один из них использует сам IP-адрес, а другой - доменное имя, соответствующее IP-адресу.

При конфигурировании виртуальных серверов можно использовать опцию ExeсCGI, которая разрешает выполнение CGI-скриптов на виртуальном сервере. Ниже приведен пример для почтового Web-интерфейса:

Пример 1.3. Подключение почтового Web-интерфейса

# Файл httpd.conf

<Directory /home/httpd/mail>
 order deny,allow 
 deny from all 
 allow from localhost 
 allow from 192.168 
 allow from 123.123.123.123 
 Options ExecCGI 
</Directory> 

# Файл vhosts.conf

<VirtualHost 123.123.123.123> 
 ServerAdmin webmaster@den.dhsilabs.com 
 DocumentRoot /home/httpd/mail 
 ServerPath /mail 
 ServerName wwwmail.dhsilabs.com 
 ErrorLog logs/error_log 
 TransferLog logs/access_log 
 ErrorDocument 403 
 http://www.dhsilabs.com/messages/error403.html 
</VirtualHost> 

# Error 403 - доступ извне, то есть
# почтовый интерфейс будет доступен только 
# из локальной сети

 

 

Дальше>>

 

Источник - SoftТерра, http://www.softerra.ru

 


Copyright © "Internet Zone", http://www.izcity.com/, info@izcity.com