Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Sistema_TCP.docx
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
603.97 Кб
Скачать

52. Конфигурирование сервера Apache

После инсталляции сервера необходимо сконфигурировать его с учетом выполняемых функций. Все конфигурационные файлы находятся в каталоге conf (например, /etc/ httpd/conf). Необходимо проверить и настроить файл httpd.conf, разделенный на три раздела.

Первый раздел файла httpd.conf определяет глобальные настройки, например пул сервера, ТСР-порт, через который HTTP-сервер принимает запросы (обычно это порт 80, но можно на одном компьютере запустить несколько HTTP-серверов, подключенных к различным портам), а также параметры для загрузки динамических модулей.

Второй раздел описывает сервер “по умолчанию”, который будет отвечать на все за­ просы, не обработанные определениями VirtualHost (раздел 23.3). В нем находятся параметры конфигурации, включающие пользователя и группу, для которых будет ра­ ботать сервер (не суперпользователь!), и инструкцию DocumentRoot, которая опреде­ ляет корневой каталог для обслуживаемых документов. В этом разделе указывается так­ же ряд специальных установок, связанных, в частности, с обработкой “специальных” URL-адресов, использующих синтаксис ~пользователь для доступа к рабочему каталогу пользователя.

Глобальные параметры безопасности также устанавливаются во втором разделе кон­ фигурации. Он содержит директивы, которые позволяют управлять доступом на уровне отдельных каталогов (директива <Directory>) или файлов (<File>). С их помощью можно предотвратить доступ к важным файлам через демон httpd. Необходимо опреде­ лить, как минимум, два уровня управления доступом: на одном уровне охватывается весь каталог документов, а второй применяется только к главному каталогу документов. Для этого достаточно оставить без изменения параметры, установленные для веб-сервера Apache по умолчанию, хотя мы рекомендуем удалить параметр AllowSymLinks, чтобы предотвратить обращение демона httpd к вашему дереву документов по символическим ссылкам. (Ведь никто не хочет, чтобы кто-нибудь случайно создал символическую ссыл­ ку на каталог /etc, не так ли?) Более подробные советы по укреплению безопасности веб-сервера Apache можно найти на сайте

httpd.apache.org/docs-2.2/misc/security_tips.html.

Третий, и последний, раздел файла конфигурации настраивает виртуальные узлы. Эту тему мы обсудим в отдельном разделе.

Внеся изменения в конфигурацию, проверьте синтаксис конфигурационного файла, выполнив команду httpd -t. Если все в порядке, веб-сервер Apache ответит “Syntax OK”. Если нет, проверьте опечатки в файле httpd.conf.

Глава 23. Веб-хостинг 1011

Запуск сервера Apache

Для запуска сервера Apache можно запустить демон httpd вручную либо воспользо­ ваться сценариями запуска системы. Последний способ предпочтительнее, поскольку он гарантирует, что веб-сервер перезапускается всякий раз при перезагрузке компьютера. Для ручного запуска сервера следует ввести примерно такую команду.

% apachectl start

Сценарии загрузки описаны в главе 3.

53. Виртуальные интерфейсы

Раньше компьютер с системой UNIX обычно служил сервером для одного веб-узла (например, acme.com). По мере роста популярности сети веб, практически каждый пользователь обзавелся собственным веб-узлом, и, как грибы после дождя, стали появ­ ляться тысячи новых компаний, занимающихся веб-хостингом.

Основные конфигурации интерфейса описаны в главе 14.

Провайдеры быстро осознали, что можно добиться существенной экономии средств и ресурсов, если на одном сервере размещать несколько узлов. Это позволило управлять группой узлов, таких как acme.com, ajах.com, toadranch.com и многие другие, ис­ пользуя одно и то же аппаратное обеспечение. На практике такой подход реализуется с помощью виртуальных интерфейсов.

Идея, лежащая в основе виртуальных интерфейсов, весьма проста: одиночный ком­ пьютер обслуживает больше IP-адресов, чем позволяют его физические сетевые интер­ фейсы. Каждый из “виртуальных” сетевых интерфейсов может иметь доменное имя, под которым он известен пользователям Интернета. Это позволяет единственному серверу обслуживать сотни веб-узлов.

Виртуальные интерфейсы позволяют демону идентифицировать соединения не толь­ ко по номеру порта назначения (например, порта 80 для HTTP), но и по целевому IP- адресу. В настоящее время виртуальные интерфейсы получили широкое распростране­ ние и оказались полезными не только для веб-хостинга.

Протокол HTTP 1.1 реализует функциональные возможности, подобные виртуаль­ ным интерфейсам (официально это называется “виртуальные интерфейсы, не имеющие IP-адреса”), устраняя потребность в назначении уникальных IP-адресов веб-серверам или в конфигурировании специального интерфейса на уровне операционной системы. Этот подход позволяет совместно использовать IP-адреса, что особенно полезно, когда один сервер содержит сотни или тысячи начальных страниц (например, в случае уни­ верситетских веб-узлов).

Однако такой подход нельзя назвать практичным для коммерческих узлов, посколь­ ку уменьшается степень их масштабируемости (приходится изменять IP-адрес при пере­ мещении узла на другой сервер) и возникает угроза безопасности системы (если доступ к узлу фильтруется брандмауэром на основе IP-адресов). Кроме того, виртуальные узлы,

Глава 23. Веб-хостинг 1013

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

Конфигурирование виртуальных интерфейсов

Настройка виртуального интерфейса проходит в два этапа. Сначала требуется соз­ дать виртуальный интерфейс на уровне TCP/IP. Как именно, зависит от версий системы UNIX; инструкции для разных версий системы UNIX приводятся ниже. На втором эта­ пе необходимо сообщить серверу Apache об имеющихся виртуальных интерфейсах. Этот этап также описан ниже.

Виртуальные интерфейсы в системе Linux

Виртуальные интерфейсы Linux обозначаются в формате интерфейс:экземпляр. Например, если интерфейс Ethernet называется eth0, то связанные с ним виртуальные интерфейсы именуются eth0:0, eth0:1 и т.д. Все интерфейсы конфигурируются с по­ мощью команды ifconfig. Например, команда

$ sudo ifconfig eth0:0 128.138.243.150 netmask 255.255.255.192 up

настраивает интерфейс eth0:0 и закрепляет за ним адрес в сети 128.138.243.128/26. Для того чтобы назначенные виртуальные адреса стали постоянными, необходимо мо­ дифицировать сценарии запуска системы.

В системе Red Hat требуется для каждого виртуального интерфейса создать отдельный файл в каталоге /etc/sysconfig/network-scripts. Например, файл ifcfg-eth0:0, соответствующий приведенной выше команде ifconfig, может содержать такие строки.

DEVICE=eth0:0

IPADDR=128.138.243.150

NETMASK=255.255.255.192

NETWORK=128.138.243.128

BROADCAST=128.138.243.191

ONBOOT=yes

Подход, принятый в системе Ubuntu, аналогичен подходу, используемому в си­ стеме Red Hat, за исключением того, что определения интерфейсов должны содержаться в файле /etc/network/interfaces. Записи, соответствующие ин­ терфейсу eth0:0, в нашем примере должны выглядеть следующим образом.

Iface eth0:0 inet static

address 128.138.243.150

netmask 255.255.255.192

broadcast 128.138.243.191

В системе SuSE можно создать виртуальные интерфейсы либо с помощью программы YaST, либо путем редактирования интерфейсных файлов. Для ис­ пользования программы YAST сначала на вкладке Global Options раздела Network Settings выберите команду Traditional method with ifup.

3 Относительно новая функциональная возможность Server Name Indication (SNI) позволяет использовать протокол SSL с виртуальными узлами, но старые браузеры этого делать не могут.

1014 Часть II. Работа в сети

В системе SUSE IP-адреса каждого интерфейса конфигурируются в одном файле. Для редактирования конфигурации поищите в каталоге /etc/sysconfig/network файлы, имена которых начинаются словами ifcfg-имя_интерфейса.

Например, в показанном ниже файле определяются интерфейсы eth0 и eth0:0.

IPADDR_1=128.138.243.149

NETMASK_1=255.255.255.192

STARTMODE_1="auto"

LABEL_1=0

 IPADDR_2=128.138.243.150

NETMASK_2=255.255.255.192

STARTMODE_2="autо"

LABEL_2=1

Суффиксы, следующие за именами IPADDR и NETMASK (в данном случае _1 и _2), не обязательно должны быть представлены числами, но для согласованности такое со­ глашение является вполне приемлемым. Для того чтобы виртуальные интерфейсы рас­ познавались, необходимо отредактировать файл /etc/sysconfig/network/config и установить параметр NETWORKMANAGER="no".

Виртуальные интерфейсы в системе Solaris

Система Solaris поддерживает виртуальные интерфейсы (“вспомогательные ин­ терфейсы”) посредством концепции физического интерфейса и логического модуля. Например, если hme0 — это имя физического интерфейса, то hme0:1, hme0:2 и так далее — это имена соответствующих виртуальных интерфейсов. По умолчанию с каж­ дым физическим интерфейсом может быть связано до 256 виртуальных сущностей. Если вы хотите изменить это ограничение, используя команду ndd, измените параметр ip_ addrs_per_if (описание команды ndd см. в разделе 14.13).

Для конфигурирования виртуального интерфейса просто примените команду ifconfig к одному из виртуальных имен. (Соответствующий физический интерфейс в этот момент уже должен быть “подключен”.) В большинстве случаев систему настраи­ вают так, чтобы команда ifconfig применялась к виртуальным интерфейсам во время загрузки.

Рассмотрим пример, в котором компьютер под управлением системы Solaris имеет адрес в пространстве частных адресов во внутренней частной виртуальной сети (VPN) и внешний адрес — в Интернете, причем оба адреса связаны с одним и тем же физиче­ ским устройством hme0. Для того чтобы эти интерфейсы автоматически конфигуриро­ вались во время загрузки, администратор должен отредактировать два файла имен узлов: /etc/hostname.hme0 и /etc/hostname.hme0:1.

$ ls -l /etc/host*

-rw-r--r-- 1 root 10 Nov 4 10:19 /etc/hostname.hme0 -rw-r--r-- 1 root 16 Dec 21 19:34 /etc/hostname.hme0:1

Файлы имен узлов могут содержат либо имена узлов из файла /etc/hosts либо IP- адреса. В данном случае администратор использовал каждую из этих возможностей.

$ cat /etc/hostname.hme0 overkill

$ cat /etc/hostname.hme0:1 206.0.1.133

$ grep overkill /etc/hosts 10.1.2.9 overkill overkill.domain

Глава 23. Веб-хостинг 1015

Во время загрузки оба адреса конфигурируются автоматически (вместе со шлейфо­ вым адресом, который мы пропустили).

$ ifconfig -а

hme0: flags=863<UP,BROADCAST,NOTRAILERS,RUNNING,MULTICAST> mtu

1500 inet 10.1.2.9 netmask ffffff00 broadcast 10.1.2.255

hme0:1: flags=863<UP,BROADCAST,NOTRAILERS,RUNNING,MULTICAST> mtu

1500 inet 206.0.1.133 netmask ffffff80 broadcast 206.0.1.255

Виртуальные интерфейсы в системе HP-UX

В системе HP-UX все виртуальные интерфейсы можно добавлять с помощью коман­ ды ifconfig. Ее синтаксис очень похож на синтаксис, используемый в системе Solaris. Например, для того чтобы добавить первый интерфейс, следует выполнить такую ко­ манду.

$ sudo ifconfig lan0:1 192.168.69.1 up Виртуальные интерфейсы системы AIX

В системе AIX, для того чтобы добавить дополнительный IP-адрес для интерфейса, можно создать “псевдоним”. Например, для того чтобы добавить 192.168.1.3 как вирту­ альный IP-адрес интерфейса en0, можно использовать команду ifconfig.

$ sudo ifconfig en0 192.168.1.3 netmask 255.255.255.0 alias

Однако этот псевдоним является временным. Для того чтобы создать постоянный виртуальный IP-адрес, следует выполнить команду chdev.

$ sudo chdev -l en0 -a alias4=192.168.1.3,255.255.255.0

Передача серверу Apache информации о виртуальном интерфейсе

После создания виртуальных интерфейсов с помощью команды ifconfig требуется сообщить серверу Apache о том, какие документы должны обрабатываться при попытке подключения клиента к каждому интерфейсу (IP-адресу). Это можно сделать с помощью директивы VirtualHost файла httpd.conf. Каждому сконфигурированному виртуаль­ ному интерфейсу должна соответствовать одна такая директива. Приведем пример.

<VirtualHost 128.138.243.150>

ServerName www.company.com

ServerAdmin webmaster@www.company.com

DocumentRoot /var/www/htdocs/company

ErrorLog logs/www.company.com-error_log

CustomLog logs/www.company.com-access_log combined

ScriptAlias /cgi-bin/ /var/www/cgi-bin/company

</VirtualHost>

После подключения клиента к виртуальному узлу 128.138.243.150 будут обрабаты­ ваться документы из каталога /var/www/htdocs/company. Для настройки параме­ тров виртуального узла в раздел VirtualHost может включаться почти любая дирек­ тива веб-сервера Apache. Относительные пути к каталогам, включая пути для директив DocumentRoot, ErrorLog и CustomLog, интерпретируются в контексте ServerRoot.

Если виртуальные узлы имеют имена, то множественные имена в системе DNS ссы­ лаются на один и тот же IP-адрес. Конфигурация веб-сервера Apache остается прежней,

1016 Часть II. Работа в сети

но необходимо задать основной IP-адрес, который веб-сервер Apache должен прослуши­ вать в ожидании входящих запросов к именованному виртуальному узлу, и не указывать IP-адрес в разделе VirtualHost.

NameVirtualHost 128.138.243.150

<VirtualHost *>

ServerName www.company.com

ServerAdmin webmaster@www.company.com

DocumentRoot /var/www/htdocs/company

ErrorLog logs/www.company.com-error_log

CustomLog logs/www.company.com-access_log combined

ScriptAlias /cgi-bin/ /var/www/cgi-bin/company

</VirtualHost>

В этой конфигурации веб-сервер Apache ищет заголовки HTTP, чтобы определить требуемый сайт. Сервер прослушивает запросы к сайту www.company.com на его основ­ ном IР-адресе 128.138.243.150.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]