如何强制 Apache 跳过绑定到失败的接口?

如何强制 Apache 跳过绑定到失败的接口?

我在笔记本电脑上的 VirtualBox 中运行 Apache。我还使用了基于 IP 的 VirtualHost-s。我希望无论何时移动,都能访问 LAN, 到某些已知的网络。然而,IP不是“移动”,因为我已经在网络路由器上设置了 DHCP,为 MAC 分配静态 IP,所以每个位置的 IP 基本上是静态的。

我希望我的 Apache 配置中包含所有这些 IP。

但是,Listen 指令在以下情况下会失败:接口不可用。

有什么方法可以让 Listen 指令在或者时尚而不是时尚?

谢谢。

答案1

如果您希望 Apache 监听分配给机器的所有 IP 地址,您可以简单地指定一个不带任何 IP 地址的 bind 指令,例如:

Listen 80

如果您需要仅绑定到已分配地址的子集,则一个可能的解决方案是确保两个 IP 地址始终分配给机器,即使它们未分配给物理接口。

从问题和评论中我了解到您目前正在使用 BSD,但如果其他平台可以解决问题,我也愿意尝试。以下是我在 Ubuntu 上所做的非常类似的事情。我预计此方法的一些变体也可以在 BSD 上运行,但我对 BSD 的了解不够,无法为 BSD 提供详细的解决方案。

Linux 有一个dummy网络驱动程序,它带有一个虚拟接口,dummy0您可以为其分配 IP 地址。这些 IP 地址将被视为本地 IP 地址,就像分配给物理接口的 IP 地址一样,因此 Apache 可以绑定到它们。

/etc/network/interfaces添加了post-up如下一行:

post-up /usr/local/sbin/eth0-post-up

然后/usr/local/sbin/eth0-post-up我加载dummy驱动程序并配置我需要的所有 IP 地址:

#!/bin/bash
modprobe dummy
ip address add dev dummy0 10.58.249.248/32
ip address add dev dummy0 10.138.65.134/32

相关内容