如何将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}
什么都不起作用。有什么办法吗?
答案1
这是不可能的,你甚至不需要它。如果这是可能的,那么它将与虚拟主机匹配。由于HTTP_HOST
服务器变量包含标头的值Host:
,这意味着它始终匹配每个请求。Apache 已经这样工作:如果没有匹配的 VirtualHost,它将使用该 IP 和端口的第一个基于名称的虚拟主机。
配置文件中给定 IP:port 对的第一个基于名称的 vhost 非常重要,因为它用于接收该地址和端口上的所有请求,而对于该 IP:port 对,没有其他 vhost 具有匹配的
ServerName
或ServerAlias
。如果服务器不支持,它还用于所有 SSL 连接服务器名称指示。
因此,仅拥有一个基于名称的虚拟主机与您可能尝试对 执行的操作相同ServerName %{HTTP_HOST}
。