我无法让 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