Директива 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