是否可以使用 Apache 中的环境变量设置 ServerName?

是否可以使用 Apache 中的环境变量设置 ServerName?

如何将ServerNameApache 中的指令设置为环境变量HTTP_HOST

我努力了:

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

什么都不起作用。有什么办法吗?

答案1

这是不可能的,你甚至不需要它。如果这是可能的,那么它将与虚拟主机匹配。由于HTTP_HOST服务器变量包含标头的值Host:,这意味着它始终匹配每个请求。Apache 已经这样工作:如果没有匹配的 VirtualHost,它将使用该 IP 和端口的第一个基于名称的虚拟主机。

配置文件中给定 IP:port 对的第一个基于名称的 vhost 非常重要,因为它用于接收该地址和端口上的所有请求,而对于该 IP:port 对,没有其他 vhost 具有匹配的ServerNameServerAlias。如果服务器不支持,它还用于所有 SSL 连接服务器名称指示

因此,仅拥有一个基于名称的虚拟主机与您可能尝试对 执行的操作相同ServerName %{HTTP_HOST}

相关内容