我对 Apache 2.4 中的 vhosts 如何工作感到困惑。我已启用虚拟主机,并且在我的服务器上设置了两个网站。我认为这意味着默认主机 (/var/www/html) 不再工作。但是 httpd.conf 的哪些部分被虚拟主机覆盖了?httpd.conf 中的诸如“conf.d”之类的包含是否适用于虚拟主机,还是我必须手动分配它们?我在 httpd.conf 中有一行将特殊标头分配给 RemoteIPHeader,我是否必须在每个虚拟主机 .conf 文件中都包含此行?请帮助我了解启用虚拟主机后 httpd.conf 的工作原理。谢谢!
答案1
每项指令列出语境在哪里它是有效的。换句话说,在哪里允许使用它。
这语境可以是以下任意组合:
s-服务器配置这意味着该指令可以在服务器配置文件(例如
httpd.conf
)中使用,但不能在任何<VirtualHost>
或容器中使用。它根本<Directory>
不允许在文件中使用 。.htaccess
五-虚拟主机此上下文意味着该指令可能出现在<VirtualHost>
服务器配置文件的容器内。
d——目录在此上下文中标记 为有效的指令可以在服务器配置文件中的<Directory>
、、、和容器内使用,但须遵守配置部分中概述<Location>
的限制。<Files>
<If>
<Proxy>
h——.htaccess如果指令在此上下文中有效,则意味着它可以出现在每个目录.htaccess
文件中。但它可能不会被处理,但这取决于当前活动的覆盖。
如果多次使用一个指令,则上下文、范围和指令出现的顺序决定哪个指令优先。
关于VirtualHost
条目中使用的指令将覆盖默认设置,但仅适用于该虚拟主机条目。
使用基于名称的虚拟托管第一的<VirtualHost addr:port>
成为默认值,它将为所有与其他 VirtualHost 条目中使用的任何明确定义的 ServerName/ServerAlias 名称不匹配的请求提供服务。