| ||
ВиртуальностьВ статье пойдет речь о конфигурировании виртуальных 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 |