Apache. Документация на русском


Разделы:   1      2      3    4    5    6    7    8    9    10    11    12    13    14    15    16  

Раздел 2. Использование HTTP-сервера Apache

Пункты:   6    7    8    9    10    11    12    13    14    15    16    17      18      19    20    21    22    23    24    25    26  

 <         > 
  RU            EN  

Пункт 18. Настройка адресов и портов, которые использует Apache

Настройка HTTP-сервера Apache для прослушивания определенных адресов и портов.

Обзор

Когда httpd запускается, он привязывается к какому-то порту и адресу на локальной машине и ждет входящих запросов. По умолчанию он прослушивает все адреса на машине. Однако может потребоваться указание прослушивать определенные порты, или только выбранные адреса, или их комбинацию. Это часто сочетается с функцией виртуального хоста, которая определяет, как httpd реагировать на разные IP-адреса, имена хостов и порты.

Директива Listen указывает серверу принимать входящие запросы только на указанные порты или комбинации адресов и портов. Если в директиве указан только номер порта Listen , сервер прослушивает данный порт на всех интерфейсах. Если указан IP-адрес, а также порт, сервер будет прослушивать данный порт и интерфейс. Можно использовать несколько Listen директив, чтобы указать количество адресов и портов для прослушивания. Сервер будет отвечать на запросы с любого из перечисленных адресов и портов.

Например, чтобы сервер принимал соединения как через порт 80, так и через порт 8000 на всех интерфейсах, используйте:

 Слушай 80
Слушай 8000 

Чтобы сервер принимал соединения на порт 80 для одного интерфейса и порт 8000 для другого, используйте

 Прослушать 192.0.2.1:80
Прослушать 192.0.2.5:8000 

Адреса IPv6 должны быть заключены в квадратные скобки, как в следующем примере:

 Слушайте [2001:db8::a00:20ff:fea7:ccea]:80 

Перекрывающиеся Listen директивы приведут к фатальной ошибке, которая не позволит запустить сервер.

(48)Address already in use: make_sock: could not bind to address [::]:80

Дополнительные советы по устранению неполадок см. в обсуждении на вики.

Особые соображения по IPv6

Все больше платформ реализуют IPv6, и APR поддерживает IPv6 на большинстве этих платформ, что позволяет httpd распределять сокеты IPv6 и обрабатывать запросы, отправленные по IPv6.

Одним из усложняющих факторов для администраторов httpd является то, может ли сокет IPv6 обрабатывать как соединения IPv4, так и соединения IPv6. При обработке соединений IPv4 с сокетом IPv6 используются IPv6-адреса, сопоставленные с IPv4, которые разрешены по умолчанию на большинстве платформ, но запрещены по умолчанию во FreeBSD, NetBSD и OpenBSD, чтобы соответствовать общесистемной политике на этих платформах. В системах, где это запрещено по умолчанию, специальный configure параметр может изменить это поведение для httpd.

С другой стороны, на некоторых платформах, таких как Linux и Tru64, единственным способом обработки как IPv6, так и IPv4 является использование сопоставленных адресов. Если вы хотите httpd обрабатывать подключения IPv4 и IPv6 с минимальным количеством сокетов, что требует использования адресов IPv6, отображаемых в IPv4, укажите этот --enable-v4-mapped configure параметр.

--enable-v4-mapped используется по умолчанию на всех платформах, кроме FreeBSD, NetBSD и OpenBSD, поэтому, вероятно, именно так был создан ваш httpd.

Если вы хотите, чтобы httpd обрабатывал только подключения IPv4, независимо от того, что будет поддерживать ваша платформа и APR, укажите адрес IPv4 во всех Listen директивах, как в следующих примерах:

 Слушать 0.0.0.0:80
Прослушать 192.0.2.1:80 

Если ваша платформа поддерживает это и вы хотите, чтобы httpd обрабатывал соединения IPv4 и IPv6 через разные сокеты (т. е. отключал сопоставление IPv4-адресов), укажите эту --disable-v4-mapped configure опцию. --disable-v4-mapped используется по умолчанию во FreeBSD, NetBSD и OpenBSD.

Указание протокола с помощью Listen

Необязательный аргумент второго протокола Listen не требуется для большинства конфигураций. Если не указано, https используется по умолчанию для порта 443 и http по умолчанию для всех остальных портов. Протокол используется для определения того, какой модуль должен обрабатывать запрос, и для применения специфичных для протокола оптимизаций с помощью AcceptFilter директивы.

Вам нужно только установить протокол, если вы работаете на нестандартных портах. Например, запуск https сайта на порту 8443:

 Слушай 192.170.2.1:8443 https 

Как это работает с виртуальными хостами

Директива Listen не реализует виртуальные хосты — она только сообщает основному серверу, какие адреса и порты прослушивать. Если <VirtualHost> директивы не используются, сервер будет вести себя одинаково для всех принятых запросов. Однако <VirtualHost> может использоваться для указания другого поведения для одного или нескольких адресов или портов. Чтобы реализовать VirtualHost, серверу сначала нужно сообщить, чтобы он прослушивал адрес и порт, которые будут использоваться. Затем <VirtualHost> следует создать раздел для указанного адреса и порта, чтобы задать поведение этого виртуального хоста. Обратите внимание, что если <VirtualHost> заданы адрес и порт, которые сервер не прослушивает, доступ к ним будет невозможен.



 <         > 

Пункты:   6    7    8    9    10    11    12    13    14    15    16    17      18      19    20    21    22    23    24    25    26  

Рейтинг@Mail.ru