Apache-2.4

如何強制 Apache 跳過綁定到失敗的介面?

  • August 19, 2018

我在筆記型電腦上的 VirtualBox 中執行 Apache。我還使用了基於 IP 的 VirtualHost-s。我希望能夠在我四處走動時訪問 某些預先知道的網路。然而,IP 並沒有“移動”,因為我在網路路由器上設置了 DHCP 以將靜態 IP 分配給 MAC,因此每個位置的 IP 基本上都是靜態的。

我想在我的 Apache 配置中擁有所有這些 IP。

但是,當其中一個介面不可用時,Listen 指令會失敗。

有什麼辦法可以讓 Listen 指令以OR方式而不是AND方式工作?

謝謝你。

如果你想讓 Apache 監聽分配給機器的所有 IP 地址,你可以簡單地指定一個沒有任何 IP 地址的綁定指令,例如:

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

引用自:https://serverfault.com/questions/926876