<-
Apache > HTTP Server > 文档 > 版本 2.4 > 虚拟主机

Apache 基于 IP 的虚拟主机支持

可用语言:  en  |  fr  |  ja  |  ko  |  tr 

Support Apache!

另请参阅

top

什么是基于 IP 的虚拟主机

基于 IP 的虚拟主机是一种根据请求接收的 IP 地址和端口应用不同指令的方法。最常见的是,它用于在不同的端口或接口上提供不同的网站。

在许多情况下,基于名称的虚拟主机 更方便,因为它们允许许多虚拟主机共享单个地址/端口。请参阅 基于名称的虚拟主机与基于 IP 的虚拟主机,以帮助您做出决定。

top

系统要求

正如术语“基于 IP”所表明的那样,服务器**必须为每个基于 IP 的虚拟主机拥有不同的 IP 地址/端口组合**。这可以通过机器拥有多个物理网络连接来实现,或者通过使用大多数现代操作系统支持的虚拟接口来实现(有关详细信息,请参阅系统文档,这些接口通常称为“IP 别名”,并且“ifconfig”命令最常用于设置它们),以及/或使用多个端口号。

在 Apache HTTP Server 的术语中,使用单个 IP 地址但使用多个 TCP 端口,也被称为基于 IP 的虚拟主机。

top

如何设置 Apache

有两种方法可以配置 Apache 以支持多个主机。要么为每个主机名运行一个单独的 httpd 守护进程,要么运行一个支持所有虚拟主机的单个守护进程。

在以下情况下使用多个守护进程

在以下情况下使用单个守护进程

top

设置多个守护进程

为每个虚拟主机创建一个单独的 httpd 安装。对于每个安装,在配置文件中使用 Listen 指令来选择该守护进程服务的 IP 地址(或虚拟主机)。例如:

Listen 192.0.2.100:80

建议您使用 IP 地址而不是主机名(请参阅 DNS 注意事项)。

top

设置单个守护进程和虚拟主机

对于这种情况,单个 httpd 将为主服务器和所有虚拟主机提供请求服务。配置文件中的 VirtualHost 指令用于将 ServerAdminServerNameDocumentRootErrorLogTransferLogCustomLog 配置指令的值设置为每个虚拟主机的不同值。例如:

<VirtualHost 172.20.30.40:80>
    ServerAdmin [email protected]
    DocumentRoot "/www/vhosts/www1"
    ServerName www1.example.com
    ErrorLog "/www/logs/www1/error_log"
    CustomLog "/www/logs/www1/access_log" combined
</VirtualHost>

<VirtualHost 172.20.30.50:80>
    ServerAdmin [email protected]
    DocumentRoot "/www/vhosts/www2"
    ServerName www2.example.org
    ErrorLog "/www/logs/www2/error_log"
    CustomLog "/www/logs/www2/access_log" combined
</VirtualHost>

建议您在 <VirtualHost> 指令中使用 IP 地址而不是主机名(请参阅 DNS 注意事项)。

特定 IP 地址或端口优先于其通配符等效项,并且任何匹配的虚拟主机优先于服务器的基本配置。

几乎**所有**配置指令都可以放在 VirtualHost 指令中,除了控制进程创建和其他一些指令的指令。要了解指令是否可以在 VirtualHost 指令中使用,请使用 指令索引 检查 上下文

SuexecUserGroup 可以在 VirtualHost 指令中使用,如果使用 suEXEC 包装器

安全:在指定日志文件写入位置时,请注意一些安全风险,这些风险存在于除启动 Apache 的用户以外的任何人对写入日志文件的目录具有写入权限的情况下。有关详细信息,请参阅 安全提示 文档。

可用语言:  en  |  fr  |  ja  |  ko  |  tr 

top

评论

注意
这不是问答部分。此处发布的评论应针对改进文档或服务器的建议,如果这些评论已实施或被认为无效/与主题无关,则可能会被我们的版主删除。有关如何管理 Apache HTTP Server 的问题应发送到我们的 IRC 频道 #httpd(在 Libera.chat 上),或发送到我们的 邮件列表