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

UnixForum





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

Серверы Linux. Часть I. Серверы Apache и Squid

Оригинал: Apache web server
Автор: Paul Cobbaut
Дата публикации: 24 мая 2015 г.
Перевод: А.Панин
Дата перевода: 10 июля 2015 г.

Глава 1. Веб-сервер Apache

1.3. Именованные виртуальные серверы в дистрибутиве Debian

1.3.1. Именованные виртуальные серверы

Участники клуба моделистов поездов и шахматного клуба столкнулись с трудностями, связанными с необходимостью запоминания номеров портов. Они предпочли бы, чтобы доступ к их веб-сайтам мог осуществляться по именам.

Мы продолжим работу с веб-сервером, который уже обслуживает три веб-сайта на трех портах. Но в данном случае нам придется сделать так, чтобы эти веб-сайты были доступны по именам choochoo.local, chessclub42.local и hunter2.local.

Начнем с создания трех новых виртуальных серверов.

root@debian7:/etc/apache2/sites-available# vi choochoo.local 
root@debian7:/etc/apache2/sites-available# vi chessclub42.local 
root@debian7:/etc/apache2/sites-available# vi hunter2.local 
root@debian7:/etc/apache2/sites-available# cat choochoo.local 
<VirtualHost *:80>
        ServerAdmin webmaster@localhost
        ServerName choochoo.local
        DocumentRoot /var/www/choochoo
</VirtualHost>
root@debian7:/etc/apache2/sites-available# cat chessclub42.local 
<VirtualHost *:80>
        ServerAdmin webmaster@localhost
        ServerName chessclub42.local
        DocumentRoot /var/www/chessclub42
</VirtualHost>
root@debian7:/etc/apache2/sites-available# cat hunter2.local 
<VirtualHost *:80>
        ServerAdmin webmaster@localhost
        ServerName hunter2.local
        DocumentRoot /var/www/hunter2
</VirtualHost>
root@debian7:/etc/apache2/sites-available#

Обратите внимание на то, что все виртуальные серверы принимают соединения на порту 80, а их имена заданы с помощью директивы ServerName.

1.3.2. Разрешение доменных имен

Мы должны каким-либо образом осуществлять разрешение установленных доменных имен. Данная операция может осуществляться средствами сервера DNS, который будет обсуждаться в другой главе. В данном же случае мы рассмотрим способ быстрого добавления трех доменных имен в файл /etc/hosts.

root@debian7:/etc/apache2/sites-available# grep ^192 /etc/hosts 
192.168.42.50 choochoo.local
192.168.42.50 chessclub42.local
192.168.42.50 hunter2.local

Учтите, что в вашем случае может использоваться отличный IP-адрес...

1.3.3. Активация виртуальных серверов

После этого мы активируем созданные виртуальные серверы с помощью утилиты a2ensite.

root@debian7:/etc/apache2/sites-available# a2ensite choochoo.local 
Enabling site choochoo.local.
To activate the new configuration, you need to run:
  service apache2 reload
root@debian7:/etc/apache2/sites-available# a2ensite chessclub42.local 
Enabling site chessclub42.local.
To activate the new configuration, you need to run:
  service apache2 reload
root@debian7:/etc/apache2/sites-available# a2ensite hunter2.local 
Enabling site hunter2.local.
To activate the new configuration, you need to run:
  service apache2 reload

1.3.4. Повторное чтение данных конфигурации и проверка работоспособности виртуальных серверов

После исполнения команды для повторного чтения данных конфигурации сервера service apache2 reload веб-сайты должны быть доступны по заданным именам.

root@debian7:/etc/apache2/sites-available# service apache2 reload
Reloading web server config: apache2.
root@debian7:/etc/apache2/sites-available# wget chessclub42.local 
--2014-05-06 21:37:13--  http://chessclub42.local/
Распознаётся chessclub42.local (chessclub42.local)... 192.168.42.50
Подключение к chessclub42.local (chessclub42.local)|192.168.42.50|:80... соединение установлено.
HTTP-запрос отправлен. Ожидание ответа... 200 OK
Длина: 77 [text/html]
Сохранение в: `index.html'

100%[=============================================>] 77         --.-K/s   за 0s

2014-05-06 21:37:13 (2.06 MB/s) - `index.html' сохранён [77/77]

root@debian7:/etc/apache2/sites-available# cat index.html 
Добро пожаловать в шахматный клуб Chess club 42

1.4. Защита веб-сайта с помощью пароля в дистрибутиве Debian

Вы можете защитить файлы и директории своего веб-сайта с помощью файла .htaccess, в котором находится ссылка на файл .htpasswd. Утилита htpasswd позволяет создать файл .htpasswd, который предназначен для хранения идентификатора пользователя и его пароля (в зашифрованном виде).

В примере ниже благодаря флагу -c создается новый файл .htpasswd с паролем для пользователя cliff.

root@debian7:~# htpasswd -c /var/www/.htpasswd cliff 
New password:
Re-type new password:
Adding password for user cliff
root@debian7:~# cat /var/www/.htpasswd
cliff:$apr1$vujll0KL$./SZ4w9q0swhX93pQ0PVp.

Ввиду того, что пользователь с именем rob также хочет получить доступ к файлам веб-сайта, в примере ниже показана методика добавления пароля второго пользователя в существующий файл .htpasswd.

root@debian7:~# htpasswd /var/www/.htpasswd rob 
New password:
Re-type new password:
Adding password for user rob
root@debian7:~# cat /var/www/.htpasswd 
cliff:$apr1$vujll0KL$./SZ4w9q0swhX93pQ0PVp.
rob:$apr1$HNln1FFt$nRlpF0H.IW11/1DRq4lQo0

Пользователи Cliff и Rob используют один и тот же пароль (hunter2), но это не заметно при рассмотрении содержимого файла .htpasswd из-за отличающихся значений salt.

После этого нам придется создать файл .htaccess в объявленной в рамках директивы DocumentRoot корневой директории защищаемого с помощью пароля веб-сайта. В данном примере показана методика создания упомянутого файла.

root@debian7:~# cd /var/www/hunter2/ 
root@debian7:/var/www/hunter2# cat .htaccess 
AuthUserFile /var/www/.htpasswd
AuthName "Вход исключительно для участников!"
AuthType Basic
require valid-user

Учтите, что мы защищаем с помощью пароля веб-сайт, который был создан ранее для работы на порту 9000 сервера.

Ввиду того, что мы разместили рассматриваемый веб-сайт хакспейса "hunter2" в поддиректории основного вебсайта сервера, нам придется установить соответствующее значение параметра AllowOverride в файле конфигурации основного веб-сайта сервера, расположенном по пути /etc/apache2/sites-available/default, таким образом, как показано ниже (приведенные номера строк корректны для дистрибутива Debian 7 и в вашем случае могут отличаться).

9         <Directory /var/www/>
10                 Options Indexes FollowSymLinks MultiViews
11                 AllowOverride Authconfig
12                 Order allow,deny
13                 allow from all
14         </Directory>

Теперь перезапустите службу веб-сервера apache2 и проверьте работоспособность механизма защиты!


Предыдущий раздел: Оглавление Следующий раздел:
Виртуальные серверы для заданных номеров портов   Виртуальные серверы для заданных номеров портов в дистрибутиве CentOS