Наши партнеры








Книги по Linux (с отзывами читателей)

Библиотека сайта rus-linux.net

2. Настройка виртуальных хостов

Теперь мы рассмотрим настройку виртуальных хостов. Допустим, у вас есть IP-адрес xxx.xxx.xxx.xxx и следующие доменные имена: host1.aa, www.host1.aa, а также host2.aa, www.host2.aa, которые указывают на IP-адрес xxx.xxx.xxx.xxx.

Задача состоит в следующем: нам нужно, чтобы на два первых домена (host1.aa и www.host1.aa) отзывался web-сайт, файлы которого находятся в каталоге /var/www/www.host1.aa/WebRoot, а на два других (host2.aa и www.host2.aa) отзывался web-сайт, файлы которого находятся в каталоге /var/www/www.host2.aa/WebRoot. Также нужно, чтобы работал PHP. Кроме того, web-сайт по адресу www.host2.aa должен быть доступен только из нашей внутренней сети (так как это внутренний сайт для корпоративного пользования), а вот сайт www.host1.aa должен быть доступен также и из внешнего мира.

Для этого мы сделаем следующее: в файл /etc/httpd/conf/vhosts/Vhosts.conf добавляем следующие строки:

NameVirtualHost xxx.xxx.xxx.xxx:80

<VirtualHost xxx.xxx.xxx.xxx:80>
    ServerAdmin     admin@host1.aa
    DocumentRoot    /var/www/www.host1.aa/WebRoot
    ServerName      www.host1.aa
    ServerAlias     host1.aa
    AddType         application/x-httpd-php .php
    ErrorLog        /var/log/httpd/host1.aa-error_log
    CustomLog       /var/log/httpd/host1.aa-access_log combined
    DirectoryIndex  index.html index.php index.htm
    AddDefaultCharset KOI8-R
</VirtualHost>
<Directory  /var/www/www.host1.aa>
    php_admin_value safe_mode on
    php_admin_value allow_url_fopen off
    php_admin_value max_execution_time 30
    php_admin_value open_base_dir /var/www/www.host1.aa/
    php_admin_value memory_limit  2M
    php_admin_value default_charset KOI8-R
    
    AllowOverride  None
    
    Options FollowSymlinks
    
    Allow from all

</Directory>

#############################################
<VirtualHost xxx.xxx.xxx.xxx:80>
    ServerAdmin     admin@host2.aa
    DocumentRoot    /var/www/www.host2.aa/WebRoot
    ServerName      www.host2.aa
    ServerAlias     host2.aa
    AddType         application/x-httpd-php .php
    ErrorLog        /var/log/httpd/host2.aa-error_log
    CustomLog       /var/log/httpd/host2.aa-access_log combined
    DirectoryIndex  index.html index.php index.htm
    AddDefaultCharset KOI8-R
</VirtualHost>
<Directory  /var/www/www.host2.aa>
    php_admin_value safe_mode on
    php_admin_value allow_url_fopen off
    php_admin_value max_execution_time 30
    php_admin_value open_base_dir /var/www/www.host2.aa/
    php_admin_value memory_limit  2M
    php_admin_value default_charset KOI8-R
    
    AllowOverride  None
    
    Options FollowSymlinks
    
    Order Deny,Allow
    Deny from all
    Allow from  192.168.1.0/24
    
    #Allow from all

</Directory>

Поясним ниже опции, которые мы использовали в нашем примере настройки:

  • ServerAdmin admin@host2.aa : эта опция определяет email-адрес, который будет появляться в сообщении при ошибках сервера. Иначе говоря, сервер будет предлагать обращаться администратору сервера по этому адресу.
  • DocumentRoot /var/www/www.host1.aa/WebRoot: этим мы определяем корневой каталог для веб-сервера, где лежат на диске файлы вашего сайта.
  • ServerName www.host2.aa: здесь мы указываем имя виртуального хоста, на которое сервер должен отзываться, когда его набирают в браузере.
  • ServerAlias host2.aa: это псевдоним ServerName. Этим мы объясняем, что под именами www.host2.aa и host2.aa будет появляться один и тот же сайт. Таким образом можно перечислить все доменные имена, если их несколько, на которые будет отзываться данный виртуальный хост. Все эти доменные имена должны иметь соответствующую запись в DNS.
  • AddType application/x-httpd-php .php: эта опция включает интерпретатор PHP для документов с расширением .php.
  • ErrorLog /var/log/httpd/host2.aa-error_log: в этот файл пишется журнал ошибок сервера.
  • CustomLog /var/log/httpd/host2.aa-access_log combined: в этот файл пишется журнал о посещениях вашего сайта. combined означает подробный лог. Если мало места на диске, можно использовать простой лог common.
  • DirectoryIndex index.html index.php index.htm: этим мы говорим, что индексными файлами каталогов будут файлы с именами index.html, index.php, index.htm.
  • AddDefaultCharset KOI8-R: этим мы заставляем сервер слать в http заголовке кодировку KOI8-R. Если это не указывать, сервер шлет по умолчанию ISO-8859-1. Чтобы Apache вообще ничего не слал в заголовке, поставьте AddDefaultCharset off. В таком варианте браузер будет руководствоваться тем, что написано в <META> ваших html документов.
  • php_admin_value safe_mode on: эта опция заставляет PHP работать в безопасном режиме. Это значит, что блокируются некоторые опасные функции PHP.
  • php_admin_value allow_url_fopen off: этим мы запрещаем PHP открывать соединения с внешними серверами с помощью функций fopen(), file() и т.д.. То есть блокируем такие действия, как <? $content=file('http://lafox.net/');?>.
  • php_admin_value max_execution_time 30: этим мы указываем, что скрипт PHP нужно обрывать после 30 секунд работы. Эта опция важна для предотвращения зацикливаний, а так же снижает опасность “DoS” атак на сервер (атак на отказ в обслуживании).
  • php_admin_value open_base_dir /var/www/www.host2.aa/: этим мы запрещаем всем функциям PHP доступ к файлам, находящимся выше каталога /var/www/www.host2.aa/. Этот запрет не дает возможность вашим пользователям выполнять такие вредоносные операции, как <? $content=file('/etc/password');?>, что значительно увеличивает защиту сервера от атак и ошибок при программировании PHP-скриптов.
  • php_admin_value memory_limit 2M: этим мы ограничиваем размер памяти, который может использовать PHP-скрипт. Это важный параметр, так как он предотвращает перегрузку сервера из-за ошибок в скриптах, вызывающих неограниченное использование памяти. Так же этим мы уменьшаем опасность “DoS” атак.
  • php_admin_value default_charset KOI8-R: это заставляет PHP посылать в HTTP заголовке информацию о кодировке данных. Обратите внимание, что опция AddDefaultCharset, описанная выше, не действует на PHP скрипты.
  • AllowOverride None: опция запрещает перекрывать настройки общего конфиг-файла файлом .htaccess. Если вы хотите оставить эту возможность, напишите AllowOverride all.
  • Options FollowSymlinks: разрешает использование символических ссылок.
  • Order Deny,Allow: определяет порядок применения правил по запрещению и предоставлению доступа.
  • Deny from all: запрещает доступ к этому виртуальному хосту отовсюду.
  • Allow from 192.168.1.0/24: эта опция разрешает доступ к сайту из сети 192.168.1.0/24.
  • Allow from all: разрешает доступ к нашему виртуальному хосту отовсюду.

Для установки CGI версии php (это, например, полезно в случае, если нужно выполнять скрипты на php в командной оболочке), устанавливаем

# urpmi php-cgi