Apache VHOST:主机与IP

我有以下的Apacheconfiguration:

ServerName mydomain.com <VirtualHost 1.2.3.4:80> # contains my IP NameVirtualHost 1.2.3.4 # contains my IP ServerName mydomain.com </VirtualHost> 

我的假设是,只有mydomain.com的请求应该去虚拟主机。 不幸的是,即使对IP地址(上面代码中的1.2.3.4)的请求也由VHOST处理。

1)什么是正确的程序区分IP和主机?

2)将请求指向IP的正确方法是什么?即403(即单独的VHOST)?

非常感谢!

我不认为有一种方法可以通过与虚拟主机相混淆来防止这种情况。 你总是会有一个默认的虚拟主机。

但是,你可以用mod_rewrite来完成它。 就像是

 RewriteEngine on RewriteCond %{HTTP_HOST} !^mydomain.com [NC] RewriteRule ^/(.*) /$1 [F] 

当服务器被IP到达时,将返回403(F =禁止),除非有人聪明(即,在仍然使用IP的情况下插入Host:http标头;普通浏览器不这样做)。

您也可以尝试redirect到mydomain.com而不是禁止:

 RewriteEngine on RewriteCond %{HTTP_HOST} !^mydomain.com [NC] RewriteRule ^/(.*) http://mydomain.com/$1 [R=301] 

第一个VirtualHost是默认的,这就是为什么它也获得你的IP请求。
我会这样做:

 NameVirtualHost *:80 <VirtualHost 1.2.3.4:80> ServerName ip.mydomain.com # first VH is default! </VirtualHost> <VirtualHost 1.2.3.4:80> ServerName mydomain.com </VirtualHost>