Назад | Перейти на главную страницу

Можно ли установить ServerName с помощью переменной среды в Apache?

Как я могу установить ServerName директива в Apache к переменной окружения HTTP_HOST

Я пытался:

ServerName %{HTTP_HOST} #or ServerName ${HTTP_HOST} or expr=%{HTTPS}
Define server_name %{HTTP_HOST} #or ${HTTP_HOST} or expr=%{HTTPS}

Ничего не работает. Есть ли способ сделать это?

Это невозможно и даже не нужно. Если бы это было возможно, это противоречило бы Сопоставление виртуального хоста. Как HTTP_HOST серверная переменная содержит значение Host: заголовок, это будет означать, что он всегда соответствует каждому запросу. Apache уже работает так: если нет подходящего VirtualHost, он будет использовать первый виртуальный хост на основе имени для этого IP-адреса и порта.

Первый виртуальный хост на основе имени в файле конфигурации для данной пары IP: порт важен, потому что он используется для всех запросов, полученных по этому адресу и порту, для которых нет другого виртуального хоста для этой пары IP: порт. ServerName или ServerAlias. Он также используется для всех SSL-соединений, если сервер не поддерживает Индикация имени сервера.

Следовательно, наличие только одного виртуального хоста на основе имени будет идентично тому, что вы, вероятно, пытаетесь сделать со своим ServerName %{HTTP_HOST}.