【问题标题】:Create an IP vHost in Apache在 Apache 中创建 IP vHost
【发布时间】:2013-11-02 21:29:17
【问题描述】:

我想创建一个可同时使用域名和 IP 地址(特定)的 Apache vHost。我试过了,但失败了:

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

【问题讨论】:

    标签: apache virtualhost


    【解决方案1】:

    试试这个

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

    【讨论】:

    • ServerAlias IP-Address 没用。当通过其 IP 访问服务器时,它将默认使用定义的第一个 vhost。
    【解决方案2】:

    起初 Apache 有两种主要模式,基于 ip 的虚拟主机或name based virtualhosting

    现在第二种方式适用于指令NameVirtualhost

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

    重要的是要认识到基于名称的虚拟主机解析的第一步是基于 IP 的解析。基于名称的虚拟主机解析仅在将候选者缩小到基于 IP 的最佳匹配后选择最合适的基于名称的虚拟主机。 在所有 VirtualHost 指令中对 IP 地址使用通配符 (*) 会使这种基于 IP 的映射变得无关紧要

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

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

    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>
    

    检查结果:

    sudo su
    # Debian
    . /etc/apache2/envvars; apache2 -t -D DUMP_VHOSTS
    # RedHat
    httpd -t -D DUMP_VHOSTS
    

    你应该得到类似的东西,这非常有用:

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-01
      • 1970-01-01
      • 2014-10-18
      • 2016-01-16
      • 1970-01-01
      • 2021-06-16
      • 2023-03-04
      • 1970-01-01
      相关资源
      最近更新 更多