Библиотека сайта rus-linux.net
Теперь мы рассмотрим настройку виртуальных хостов.
Допустим, у вас есть 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