Apache 无法更改监听 IP 地址

Apache 无法更改监听 IP 地址

我无法让 Apache 监听特定的 IP 地址。这是一个本地 Web 服务器,不是公共的。
我在 CentOS 5.11 上使用 Apache 2.2。
默认配置 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 个小时,但没有找到解决方案。

答案1

Apache 不会绑定到您的 VIP,因为它未在任何网络接口上配置。

为了实现这一点,您需要设置一个 sysctl:

sysctl net.ipv4.ip_nonlocal_bind=1

然后 Apache 就可以进行绑定,但是当然在 VIP 分配给机器之前不会有任何流量流动。

答案2

在您的 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        

相关内容