在Apache中创建IP vHost

在Apache中创建IP vHost,apache,virtualhost,Apache,Virtualhost,我想创建一个apachevhost,它可以同时使用域名和IP地址(特定)。我尝试了这个,但失败了: <VirtualHost IP:80> DocumentRoot /var/www/website/ </VirtualHost> DocumentRoot/var/www/website/ 试试这个 <VirtualHost *:80> ServerName example.com ServerAlias IP-Address Docu

我想创建一个apachevhost,它可以同时使用域名和IP地址(特定)。我尝试了这个,但失败了:

<VirtualHost IP:80>
    DocumentRoot /var/www/website/
</VirtualHost>

DocumentRoot/var/www/website/
试试这个

<VirtualHost *:80>
  ServerName example.com
  ServerAlias IP-Address
  DocumentRoot /var/wwww/website
</VirtualHost>

ServerName example.com
服务器别名IP地址
DocumentRoot/var/ww/website

首先,Apache作为两种主要模式,基于ip的虚拟主机或

现在,第二种方法适用于指令

第一个链接中最重要的部分是(加粗):

必须认识到,基于名称的虚拟主机解析的第一步是基于IP的解析。基于名称的虚拟主机解析仅在将候选主机缩小到基于IP的最佳匹配后选择最合适的基于名称的虚拟主机在所有VirtualHost指令中使用通配符(*)作为IP地址会使此基于IP的映射不相关

当请求到达时,服务器将根据请求使用的IP地址和端口找到最佳(最具体)匹配参数。如果有多个虚拟主机包含此最佳匹配地址和端口组合,Apache将进一步将ServerName和ServerAlias指令与请求中的服务器名称进行比较

因此,您应该找到主要apache配置(通常是
NameVirtualHost*:80
)上使用的当前
NameVirtualHost
指令,并使用多个指令代替这种单一模式,例如:

NameVirtualhost 127.0.0.1:80
NameVirtualhost 10.1.1.1:80
NameVirtualhost 192.168.10.42:80
然后在您的
VirtualHost
顶级定义中重新使用此选项,并与右侧的
ServerName
关联:

<VirtualHost 10.1.1.1:80>
  ServerName foo.bar.com
  DocumentRoot /var/www/website/
</VirtualHost>
你应该得到这样的东西,这是非常有用的:

127.0.0.1:80                   is a NameVirtualHost
         default server foobar (/etc/apache2/sites-enabled/001-test:38)
         port 80 namevhost foobar (/etc/apache2/sites-enabled/001-test:38)
         port 80 namevhost project (/etc/apache2/sites-enabled/201-project:1)
         port 80 namevhost toto (/etc/apache2/sites-enabled/503-toto:1)
10.1.1.1:80                   is a NameVirtualHost
         default server tutu (/etc/apache2/sites-enabled/601-tutu:24)
         port 80 namevhost tutu (/etc/apache2/sites-enabled/601-tutu:24)
         port 80 namevhost zorg (/etc/apache2/sites-enabled/701-zorg:42)
Syntax OK

服务器别名IP地址
无效。当通过其IP访问服务器时,它将默认为定义的第一个vhost。
127.0.0.1:80                   is a NameVirtualHost
         default server foobar (/etc/apache2/sites-enabled/001-test:38)
         port 80 namevhost foobar (/etc/apache2/sites-enabled/001-test:38)
         port 80 namevhost project (/etc/apache2/sites-enabled/201-project:1)
         port 80 namevhost toto (/etc/apache2/sites-enabled/503-toto:1)
10.1.1.1:80                   is a NameVirtualHost
         default server tutu (/etc/apache2/sites-enabled/601-tutu:24)
         port 80 namevhost tutu (/etc/apache2/sites-enabled/601-tutu:24)
         port 80 namevhost zorg (/etc/apache2/sites-enabled/701-zorg:42)
Syntax OK