 | Поддержка работы web-сервера
Виртуальные хосты, multi-homing и отдельные настройки различных каталогов
Индивидуальные каталоги, обслуживаемые сервером Apache, могут иметь свои собственные настройки конфигурации. Однако в главном конфигурационном файле может указать ограничения на то, какие опции могут быть настроены локально. Если настойка каждого каталога в отдельности разрешается, то используется директива AccessFileName, и обычно прописывается локальное конфигурационное имя файла .htaccess. Ограничения на возможности локальной настройки каталога определяются в директиве <Directory>.
Например:
Listing 7. Пример директивы directory
#Let's have some Icons, shall we?
Alias /icons/ "/usr/share/apache2/icons/"
<Directory "/usr/share/apache2/icons">
Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>
|
Часто одновременно с индивидуально настраиваемыми каталогами Apache может обслуживать виртуальные хосты. Многочисленные доменные имена могут быть обслужены одним и тем же процессом Apache, каждый имея доступ к определенному каталогу. Виртуальные хосты можно определить директивой <VirtualHost>; разместите файлы конфигурации во внутреннем каталоге, например, /etc/apache2/sites-enabled/, или в главном конфигурационном файле. Например, можно их задать вот так:
Listing 8. Конфигурация виртуальных хостов
<VirtualHost "foo.example.com">
ServerAdmin webmaster@foo.example.com
DocumentRoot /var/www/foo
ServerName foo.example.com
<Directory /var/www/foo>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
CustomLog /var/log/apache2/foo_access.log combined
</VirtualHost>
<VirtualHost "bar.example.org">
DocumentRoot /var/www/bar
ServerName bar.example.org
</VirtualHost>
<VirtualHost *>
DocumentRoot /var/www
</VirtualHost>
|
Последняя опция * принимает все HTTP запросы, которые направлены не на один из явно определенных имен (как те, адресуемые IP-адресом или адресуемые неуказанным символьным доменом, что также приводят к машине-серверу). Чтобы виртуальные хосты работали, DNS должна определять каждый псевдоним с записью CNAME.
Возможность multi-homing по названию похожа на виртуальный хостинг, однако идея здесь совсем другая. Используя multi-homing, можно указывать IP-адреса, с которыми машина соединяется для того, чтобы разрешить web-запросы. Например, можно дать HTTP-доступ только локальной сети LAN, но не для остального мира. Если указывается адрес, от которого ждут сигнала, также можно указать неумолчательный порт. Значение для BindAddress, выставленное по умолчанию -- это
*, что означает принимать запросы на все IP-адреса, с котрыми связан этот сервер. Пример смешанного использования выглядит примерно вот так:
Listing 9. Конфигурация multi-homing
BindAddress 192.168.2.2
Listen 192.168.2.2:8000
Listen 64.41.64.172:8080
|
В этом случае, все клиентские запросы из локальной LAN (использующие адрес 192.168.2.2) будут приняты на порт 80 и специальный порт 8000. Этот дистрибутив Apache также будет отслеживать клиентские HTTP запросы из WAN адреса, но только на потр 8080.
Ограничение доступа к Сети
Командами Order, Allow from, и Deny from в директиве <Directory> можно управлять доступом к отдельным каталогам сервера. Запрещенные или разрешенные адреса можно задавать полными или частичными именами хостов или IP-адресами. Order позволяет задавать приоритет между списком разрешения и списком запрета.
Часто требуется более тонкий контроль, нежели тот, что задается простым разрешением определенным хостам обращаться к web-серверу. Для подключения требований входа пользователя, используется семейство команд Auth*, опять-таки, внутри директивы <Directory>. Например, для установке базовой аутентификации можно использовать директиву, как показано в Listing 10.
Listing 10. Конфигурация базовой аутентификации
<Directory "/var/www/baz">
AuthName "Baz"
AuthType Basic
AuthUserFile /etc/apache2/http.passwords
AuthGroupFile /etc/apache2/http.groups
Require john jill sally bob
</Directory>
|
Можно также указать базовую аутентификацию внутри .htaccess-файла. Аутентификация дайджестом более безопасна, нежели базовая, но не так широко реализована в браузерах. Однако слабось базовой схемы (когда пароль передается открытым текстом) в любом случае лучше решается с помощью уровня SSL.
Поддержка SSL-шифрования web-трафика обеспечивается модулем mod_ssl. Если используется SSL, данные, передаваемые между сервером и клиентом, шифруются с динамически изменяемым паролем, что является стойким по отношению к перехвату. Все основные браузеры поддерживают SSL. За большей информацией по настройке Apache 2.x с mod_ssl, обратитесть к описанию на web-сайте Apache (ссылка указана в ресурсах).
|  |