将Apache限制为一个IP


13

我有一台具有一堆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的配置?有什么我不记得要寻找的东西吗?为什么这没有我记得的那么简单?


1
我没有受到冒犯或其他任何冒犯,但请您能说明一下您如何选择此问题的最佳答案?您选择的答案是另一个发行版,而我的答案是关于Ubuntu的。自从您未选择答案后,我能以任何方式使我的答案有所不同吗?
pauska

您的两个答案都包含关键Listen 192.168.0.82:80线,这正是我所需要的。我选择了cjc的答案,因为它更深入地说明了为什么需要该行。我认为提及CentOS随附的Apache版本中使用的注释是一个很好的补充。但是由于每个人似乎都同意将答案发送给pauska,所以我继续进行下去,并把它交给了他。毕竟,通过查看修订版,我注意到pauska的评论以当前形式极大地影响了cjc的答案。
2012年

Answers:



16

/etc/apache2/ports.conf文件中查找。

您会发现一条指令,例如:

Listen 80

CentOS框上的注释描述了此选项:

#
# Listen: Allows you to bind Apache to specific IP addresses and/or
# ports, in addition to the default. See also the <VirtualHost>
# directive.
#
# Change this to Listen on specific IP addresses as shown below to
# prevent Apache from glomming onto all bound IP addresses (0.0.0.0)
#
#Listen 12.34.56.78:80

根据需要,将Listen 80行更改为Listen 192.168.0.82:80

您目前无法启动Apache,因为它试图绑定所有接口上的端口80(0.0.0.0名称),并且您正在node监听192.168.0.83:80。

虚拟主机块中的IP意味着该特定虚拟主机将响应该IP地址上的请求。它没有指定Apache如何绑定到它所看到的接口。


在Ubuntu上,httpd.conf是空白的,因为它们使用不同样式的配置文件(包括很多)。如OP的grep所示,也没有任何“ Listen 80”。
pauska

1
啊对。Ubuntu的。我会更新。在grep他做的反对:80所以它会想念的东西,无论如何,作为默认Listen 80
cjc 2012年

1
CentOS的评论确实可以帮到我。愚蠢的Ubuntu ...
2012年


0

根据Apache文档使用以下内容:

听192.168.0.82:80

在某些情况下(不是全部),可以进一步进行以下操作:

听some_name_in_my_localhost:80

这样,当您拥有Apache服务器场时,便可以使apache配置可移植。这有优点也有缺点(就像其他所有方面一样。)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.