具有 2 个 IP 地址的 Apache 上基于名称的虚拟主机

Name Based Virtual Hosts on Apache with 2 IP Address

我有 2 个 IP 地址。它基本上用于 SSL,但假设我希望 example1.com 和 example3.com 在 IP 1.1.1.1 上工作,example2.com 在 IP 2.2.2.2 上工作。

我应该在某处遗漏了一些东西。我在配置文件中基本上遵循了与此相关的设置 - 我确实在 Apache 文档以及许多其他来源中阅读并应用了相同的内容。

Listen 80

<VirtualHost *:80>
        ServerName example1.com
        # ...
</VirtualHost>

<VirtualHost *:80>
        ServerName example3.com
        # ...
</VirtualHost>

<VirtualHost 2.2.2.2:80>
        ServerName example2.com
        # ...
</VirtualHost>

我 example2.com 在 DNS 记录中指向 2.2.2.2,其他指向 1.1.1.1。

我可以成功转到 example1.com 和 example3.com,但 example2.com 转到默认服务器,对于此示例来说是 example1.com,因为它首先在配置中输入.

另一个奇怪的地方:保持 example2.com 的 DNS 相同,但将虚拟主机配置更改为 *:80,它打开网站,服务器 IP 报告为 1.1.1.1,正如我可以从网络脚本中看到的那样怎么回事。

还有一个:即使我在配置中只保留 example2.com 域并删除其他域,它仍然无法使用 IP。正如我试图提到的,如果我输入 2.2.2.2,它会通过该 IP 成功访问服务器。

有人可以帮我解决这个问题,这显然是由我做错或遗漏的事情引起的。

谢谢。

我在服务器中启用了 DHCP。我将其更改为静态网络,一切正常。

我根据需要编辑了 /etc/sysconfig/network-scripts/ifcfg-eth0 以添加静态 IP 并为我的服务器禁用了“自动配置网络”选项。它是一个 Linode 服务器,这里解释了所需的设置 - 以防万一其他人需要:https://www.linode.com/docs/networking/linux-static-ip-configuration