Директива ServerName
устанавливает схему запроса, имя хоста и порт, которые сервер использует для идентификации.
ServerName
используется (возможно, в сочетании с ServerAlias
) для уникальной идентификации виртуального хоста при использовании виртуальных хостов на основе имени.
Кроме того, это используется при создании самореферентных URL-адресов перенаправления, когда
UseCanonicalName
установлено значение, отличное от значения по умолчанию.
Например, если имя машины, на которой размещен веб-сервер simple.example.com
, , но машина также имеет псевдоним DNS www.example.com
, и вы хотите, чтобы веб-сервер идентифицировался таким образом, следует использовать следующую директиву:
ServerName www.example.com
Директива ServerName
может появиться в любом месте определения сервера. Однако каждый внешний вид переопределяет предыдущий внешний вид (на этом сервере).
Если не ServerName
указано, сервер пытается вывести видимое имя хоста клиента, сначала запрашивая у операционной системы системное имя хоста, и, если это не удается, выполняет обратный поиск по IP-адресу, присутствующему в системе.
Если порт не указан в
ServerName
, то сервер будет использовать порт из входящего запроса. Для оптимальной надежности и предсказуемости вы должны явно указать имя хоста и порт с помощью ServerName
директивы.
Если вы используете виртуальные хосты на основе имени, ServerName
внутри
<VirtualHost>
раздела указывается, какое имя хоста должно отображаться в заголовке запроса
Host:
, чтобы соответствовать этому виртуальному хосту.
Иногда сервер работает за устройством, которое обрабатывает SSL, например обратным прокси-сервером, балансировщиком нагрузки или устройством разгрузки SSL. В этом случае укажите
https://
схему и номер порта, к которому подключаются клиенты, в ServerName
директиве, чтобы убедиться, что сервер генерирует правильные самореферентные URL-адреса.
См. описание
директив UseCanonicalName
и
UseCanonicalPhysicalPort
для настроек, определяющих, будут ли самореферентные URL-адреса (например, по
mod_dir
модулю) ссылаться на указанный порт или на номер порта, указанный в клиентском запросе.
Если не указать ServerName
имя, которое ваш сервер может преобразовать в IP-адрес, это приведет к предупреждению при запуске. httpd
затем будет использовать любое имя хоста, которое он может определить, используя команду системы hostname
. Это почти никогда не будет тем именем хоста, которое вам действительно нужно.
httpd: Could not reliably determine the server's fully qualified domain name, using rocinante.local for ServerName
Смотрите также
- Проблемы, связанные с DNS и HTTP-сервером Apache
- Документация по виртуальному хосту Apache HTTP Server
-
UseCanonicalName
-
UseCanonicalPhysicalPort
-
ServerAlias