Apache Версия 2.0 Сервера HTTP
эта страница могла быть получена в итоге с утверждением: не формируйте Apacheа таким способом, что это полагается на решение DNS для того, чтобы разобрать из файлов конфигурации. Если Apache требует, чтобы решение DNS разобрало файлы конфигурации тогда, ваш сервер может быть подчиненным проблемам надежности (то есть это не могло бы загрузить), или опровержение и воровство нападений обслуживания (включая пользователей, способных украсть хиты от других пользователей).
<VirtualHost www.abc.dom>
ServerAdmin webgirl@abc.dom
DocumentRoot /www/abc
</VirtualHost>
для Apacheа, чтобы функционировать должным образом, это абсолютно должно иметь две информации о каждом действительном хозяине:
ServerName
и по крайней мере один IP адрес, который сервер свяжет и ответит на. Вышеупомянутый пример не включает IP адрес, таким образом Apache должен использовать DNS, чтобы найти адрес
www.abc.dom
. если по некоторым причинам DNS не доступен в то время, когда ваш сервер разбирает его config файл, то этот действительный хозяин
не будет формироваться
. не будет в состоянии ответить на любые хиты этому действительному хозяину (до Apacheской версии 1.2, которую сервер даже не загрузил бы).
предположим это
www.abc.dom
имеет адрес 10.0.0.1. Тогда рассмотрите этот отрывок конфигурации:
<VirtualHost 10.0.0.1>
ServerAdmin webgirl@abc.dom
DocumentRoot /www/abc
</VirtualHost>
на сей раз Apache должен использовать обратный DNS, чтобы найти
ServerName
для этого virtualhost. Если тот обратный поиск будет терпеть неудачу тогда, то это частично повредит virtualhost (до Apacheской версии 1.2, которую сервер даже не загрузил бы). Если действительный хозяин будет на основе названия тогда, то это эффективно будет полностью выведено из строя, но если это будет на основе IP тогда, то это будет главным образом работать. Однако, если Apacheу когда-либо придется производить полный URL для сервера, который включает название сервера, тогда это будет не в состоянии произвести действительный URL.
вот - отрывок, который избегает обеих из этих проблем:
<VirtualHost 10.0.0.1>
ServerName www.abc.dom
ServerAdmin webgirl@abc.dom
DocumentRoot /www/abc
</VirtualHost>
есть по крайней мере две формы, в которые опровержение обслуживания может войти. Если Вы будете управлять версией Apacheа до версии 1.2 тогда, то ваш сервер не будет даже загружать, если один из двух упомянутых выше поисков DNS будет терпеть неудачу для любого из ваших действительных хозяев. В некоторых случаях этот поиск DNS, возможно, даже не под вашим контролем; например, если
abc.dom
является одним из ваших клиентов, и они управляют их собственным DNS, они могут вынудить ваш (пред1.2) сервер терпеть неудачу, загрузка просто, удаляя
www.abc.dom
отчет.
другая форма гораздо более коварна. Рассмотрите этот отрывок конфигурации:
<VirtualHost www.abc.dom>
ServerAdmin webgirl@abc.dom
DocumentRoot /www/abc
</VirtualHost>
<VirtualHost www.def.dom>
ServerAdmin webguy@def.dom
DocumentRoot /www/def
</VirtualHost>
предположим, что Вы назначили 10.0.0.1 на
www.abc.dom
и 10.0.0.2 к
www.def.dom
. кроме того, предположите это
def.dom
имеет контроль собственный DNS. С этим config Вы поместили
def.dom
в положение, где они могут украсть все движение, предназначенное к
abc.dom
. чтобы сделать так, все, что они должны сделать, установлено
www.def.dom
к 10.0.0.1. Так как они управляют их собственным DNS, который Вы не можете мешать им указать
www.def.dom
сделать запись везде, где они желают.
запросы, входящие к 10.0.0.1 (включая все те, где пользователи напечатали в URL формы
http://www.abc.dom/whatever
) будет все служиться
def.dom
действительный хозяин. Лучше понимать, почему это случается, требует более всестороннего обсуждения того, как Apache совпадает поступающие запросы с действительным хозяином, который будет служить этому. Грубый документ, описывающий это
is available
.
дополнение
name-based virtual host support
в Apacheе 1.1 требует, чтобы Apache знал IP адрес (а) хозяина это
httpd
продолжается. Чтобы получить этот адрес, это использует любой глобальное
ServerName
(если подарок) или запросы функция C
gethostname
(который должен возвратить то же самое как печатание "hostname" в команде незамедлительно). Тогда это выполняет поиск DNS на этом адресе. В настоящее время нет никакого способа избежать этого поиска.
если Вы боитесь, что этот поиск мог бы терпеть неудачу, потому что ваш сервер DNS снижается тогда, Вы можете вставить hostname в
/etc/hosts
(где Вы вероятно уже имеете это так, чтобы машина могла загрузить должным образом). Тогда гарантируйте, что ваша машина формируется, чтобы использовать
/etc/hosts
когда DNS терпит неудачу. В зависимости от какого РТА Вы используете, это могло бы быть достигнуто, редактируя
/etc/resolv.conf
, или возможно
/etc/nsswitch.conf
.
если ваш сервер не должен выполнить DNS по любой другой причине тогда, Вы могли бы быть в состоянии избежать неприятностей с управлением Apache с
HOSTRESORDER
набор переменной окружающей среды к "местному". Это все зависит от того, какой РОТ и библиотеки решающего устройства Вы используете. Это также затрагивает CGIs, если Вы не используете
mod_env
управлять окружающей средой. Лучше консультироваться со страницами человека или ЧАСТО ЗАДАВАЕМЫМИ ВОПРОСАМИ для вашего РТА.
VirtualHost
Listen
ServerName
<VirtualHost _default_:*>
сервер, который не имеет никаких страниц, чтобы служить
ситуация относительно DNS очень нежелательна. Для Apacheа 1.2 мы попытались заставить сервер по крайней мере продолжить загружать в случае неудавшегося DNS, но это не могло бы быть лучшим, мы можем сделать. В любом случае, требование использования явных IP адресов в файлах конфигурации очень нежелательно в сегодняшнем Интернете, где изменение нумерации - потребность.
возможная работа вокруг к воровству нападения обслуживания, описанного выше должна была бы выполнить обратный поиск DNS на IP адресе, возвращенном передовым поиском и сравнить два названия - в случае не соответствования, virtualhost будет инвалидами. Это требовало бы, чтобы обратный DNS формировался должным образом (который является кое-чем, что большинство admins является знакомым с из-за общего использования "двойных-обратных" поисков DNS серверами ПРОГРАММЫ ПЕРЕДАЧИ ФАЙЛОВ и обертками TCP).
в любом случае, это не кажется возможным, надежно загружают действительно-принятый сервер сети, когда DNS терпел неудачу, если IP адреса не используются. Частичные решения, типа выведения из строя частей конфигурации могли бы быть хуже чем не загрузка вообще в зависимости от того, чего webserver должен достигнуть.
поскольку HTTP/1.1 развернут и браузеры, и полномочия начинают выходить
Host
удар головой станет возможно избежать использования действительных хозяев на основе IP полностью. В этом случае, webserver не имеет никакого требования, чтобы сделать поиски DNS в течение конфигурации. Но на март 1997 эти особенности не были развернуты достаточно широко, чтобы быть помещенными в использование на критическом webservers.