我有一台具有一堆IP地址的服务器,我只希望Apache监听其中一个。听起来这并不是一件很难的事,而且我之前已经做过一次,但是这次我遇到了一些麻烦。首先,据我了解,这是我现在的位置:
Apache在每个地方监听端口80,它只在正确的IP上监听。
/etc/apache2$ grep -R ":80" .
./sites-available/default:<VirtualHost 192.168.0.82:80>
./httpd.conf:<VirtualHost 192.168.0.82:80>
./ports.conf:NameVirtualHost 192.168.0.82:80
./sites-enabled/000-default:<VirtualHost 192.168.0.82:80>
没有提及收听0.0.0.0。
/etc/apache2$ grep -R "0\.0\.0\.0" .
但是... Apache拒绝启动。
/etc/apache2$ sudo /etc/init.d/apache2 start
* Starting web server apache2
(98)Address already in use: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
Unable to open logs
Action 'start' failed.
The Apache error log may have more information.
[fail]
万一有人问,我不受该地址的约束:
/etc/apache2$ sudo netstat -nap | grep :80
tcp 0 0 192.168.0.83:80 0.0.0.0:* LISTEN 2822/node
错误日志/var/log/apache2/error.log
仅显示:
[Wed Aug 08 03:30:18 2012] [notice] caught SIGTERM, shutting down
我是否错过了Apache的配置?有什么我不记得要寻找的东西吗?为什么这没有我记得的那么简单?
Listen 192.168.0.82:80
线,这正是我所需要的。我选择了cjc的答案,因为它更深入地说明了为什么需要该行。我认为提及CentOS随附的Apache版本中使用的注释是一个很好的补充。但是由于每个人似乎都同意将答案发送给pauska,所以我继续进行下去,并把它交给了他。毕竟,通过查看修订版,我注意到pauska的评论以当前形式极大地影响了cjc的答案。