Apache-2.2

Apache 無法更改監聽 IP 地址

  • February 9, 2016

我無法讓 Apache 監聽特定的 IP 地址。這是一個本地網路伺服器,不是公共的。

我在使用 Apache 2.2 的 CentOS 5.11 上。

預設配置 httpd.conf 效果很好,但只監聽伺服器的靜態 IP 地址10.0.0.101:80

我附加Listen 10.0.0.103:80到 httpd.conf 的末尾,但得到錯誤:

Starting httpd: (99)Cannot assign requested address: make_sock: could not bind to address 10.0.0.103:80

我正在關注有關製作高可用性集群的教程,可以在https://www.howtoforge.com/high_availability_heartbeat_centos看到。如果我只能讓 Apache 從那個地址開始,我會很高興。

我正在使用這個舊版本的 CentOS,因為我正在嘗試使用舊硬體而不是丟棄它。

我在 Google、CentOS 站點和 Apache 的站點上連續查找了 4 個小時,但沒有找到任何解決方案。

Apache 不會綁定到您的 VIP,因為它沒有在任何網路介面上配置。

要允許這種情況發生,您需要設置一個 sysctl:

sysctl net.ipv4.ip_nonlocal_bind=1

然後 Apache 可以進行綁定,但是在將 VIP 分配給機器之前,當然不會有流量流動。

在你的 httpd.conf 檢查你是否有一個舊的“Listen”指令處於活動狀態。通過附加新指令,您可以使兩個指令發生衝突。

否則通過執行以下命令檢查另一個程序是否正在偵聽埠 80:

netstat -plant

希望你看到這樣的東西並殺死它:

Proto Recv-Q Send-Q Local Address           Foreign Address         State      PID/Program name    
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN     939/webserver        

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