我怎样才能让Apache不响应一个仅限IP的请求?

我有几个网站,都设置在http-vhosts.conf与他们各自的ServerNameDocumentRoot ,他们工作正常和丹迪。

但是,当我访问服务器的IP地址URL时,我得到了第一个虚拟主机中的文件,而不是从我期望的Apache服务器中获取http.conf文件的DocumentRoot

我如何configurationApache,以便通过IP地址访问服务器,无论是外部还是环回,都不会返回第一个VirtualHost?

这里是第一个VirtualHost,如果我通过IP访问Web服务器,我现在正在回应这个响应:

 <VirtualHost *:80> ServerName "delaneatallent.com" ServerAlias "www.delaneatallent.com" DocumentRoot "/Library/WebServer/Documents/delanea" </VirtualHost> 

如果在OS X上使用Apache 2.2.14,那很重要。

:WQ

总之,你不能 – 这就是Apache的工作原理。 如果您正在监听该IP(按照Prix的评论),则Apache将使用提供IP请求时定义的第一个虚拟主机。

如果这是不可取的,那么考虑将第一台虚拟主机改为您实际上想要的IP地址。 如果这不是你想要的,那么可以考虑把redirect作为第一个虚拟主机,让它到达你想要的地方。

 # default <VirtualHost *:80> RewriteEngine on RewriteRule ^/(.*) http://othersite.com/$1 [L,R] </VirtualHost> 

你不能阻止Apache聆听这个IP,但是你可以让它做一些别的事情,只要你有一点创造力就可以做你想做的事情。

我所做的补救措施是为/var/www执行一个默认页面,并且当您通过IP或与我的服务器上的站点相关的未知url导航到我的服务器时,它会提供默认网站。

我托pipe的实际站点位于具有默认站点configuration的站点已启用文件夹中,并且都是基于名称的,并指向不同的目录。

长话短说,通过它的IP导航到我的服务器,你会得到默认的错误页面。

为了让你的apache监听特定的ip和端口,你必须定义它:

 Listen 10.0.0.1:80 Listen 20.0.0.1:80 

其中20.0.0.1和10.0.0.1是我已经分配给它的2个示例ips。

如果您已经configuration了另一个Listen ,则可能需要对其进行更改,例如:

 Listen 0.0.0.0:80 

会让你的Apache听所有可用的接口。