有多个虚拟主机指向同一个本地 IP

有多个虚拟主机指向同一个本地 IP

是否可以在 Apache 中创建指向同一个本地网络 IP 的多个 vhost?

例如:我的机器有本地地址:192.168.1.12

我可以有两个虚拟主机指向相同的地址但不同的端口吗:

  • 192.168.1.12:1本地网站1,
  • 192.168.1.12:2本地网站2.

    ServerName 测试 ServerAlias 测试 DocumentRoot "${INSTALL_DIR}/www/test" 选项 +Indexes +Includes +FollowSymLinks +MultiViews DirectoryIndex index.php AllowOverride All Order 允许、拒绝 允许所有 要求本地

如果我只设置一个 vhost 而不修复端口,它就可以工作。例如:192.168.1.12。

如果我尝试访问 192.168.1.12:1 或 192.168.1.12:2,则无法访问服务器。

这是我的httpd.conf: https://pastebin.com/t5NuF4WJ

答案1

假设您有一个 SOHO 路由器,您建议的方法将不起作用,但有一个解决方案。

您会遇到的问题是,您尝试将多个 IP 地址绑定到一台机器,并且每个 IP 地址上都有不同的网站。这样做没有问题 - 但是您的 SOHO 路由器可能只能在端口 80 上映射 1 个 IP 地址。

解决方案是让多个网站使用同一个内部 IP 地址 - 这是一种常见配置,自 1997 年 RFC2068 以来一直受支持。其工作方式是所有网站都指向同一个 IP 地址,它们连接时做的第一件事就是告知它们想要什么域名。这称为基于名称的虚拟托管。

要在 Apache 中执行此操作,您需要以下指令:

确保指令“NameVirtualHost XXXX”位于您的 apache 配置文件中- 这是 Web 服务器正在运行的内部 IP 地址。

然后,为每个网站设置一个虚拟主机文件夹,例如

<VirtualHost *:80>
ServerName www.domain.name.of.website
ServerAlias domain.name.of.website alt.domain.name.of.website
DocumentRoot /path/to/website/document/root/

(Other directives specific to site here)
</VirtualHost>

请注意,ServerAlias 指令是可选的。

另请注意,您可以在端口 443 上使用 HTTPS 托管执行类似操作,但也需要指定证书密钥等,并且这仅适用于较新的系统(Windows 7 及以上)。

相关内容