Библиотека сайта 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 |