【问题标题】:Several virtual hosts on the same port with Apache 2.4Apache 2.4 在同一端口上的多个虚拟主机
【发布时间】:2016-05-02 07:32:48
【问题描述】:

我正在尝试用 Apache 2.4 中的虚拟主机做一些简单的事情(使用 Wampserver 2.5)

我希望能够拥有多个虚拟主机并通过以下方式访问它们:

  • www.project1.dev
  • www.project2.dev

所以我通过阅读official guidehttpd.conf 中进行了以下配置:

NameVirtualHost \*:80

#
# Project 1
#

<VirtualHost *:80>
    DocumentRoot "C:/wamp/www/myProject1/"
    ServerName www.project1.dev
    ErrorLog "logs/project1-error_log "
    CustomLog "logs/project1-access_log" common
    <Directory "C:/wamp/www/myProject1/">
      AllowOverride all
      Require all granted
    </Directory>
</VirtualHost>

#
# Project 2
#

<VirtualHost *:80>
    DocumentRoot "C:/wamp/www/myProject2/"
    ServerName www.project2.dev
    ErrorLog "logs/project2-error_log "
    CustomLog "logs/project2-access_log" common
    <Directory "C:/wamp/www/myProject2/">
      AllowOverride all
      Require all granted
    </Directory>
</VirtualHost>

我还将它们添加到我的 hosts 文件中

127.0.0.1 http://project1.dev
127.0.0.1 http://project2.dev

但是当我在重启 wamp 服务后进行测试时,http://project1.devhttp://project2.dev 都指向 C:/wamp/www/myProject1/

project2.dev 相关的第二条路径C:/wamp/www/myProject2/ 似乎被忽略了。

我错过了什么吗?

谢谢。

【问题讨论】:

  • *:80。不,您需要指定 主机
  • 每次发布​​新版本的 Apache 时,您如何处理虚拟主机都会不断变化。我预计它会在一周左右再次改变。您需要阅读当前版本的文档并严格遵守。您不能使用较旧或较新的文档,因为它的格式不正确。
  • \*:80?尝试消除\。您在NVH 指令中添加的内容必须与&lt;VirtualHost&gt; 行完全匹配...
  • @kainaw 我有 Apache 2.4.9,我读过的文档是我猜的好文档:httpd.apache.org/docs/2.4/vhosts/name-based.html
  • @MarcB 根据文档,\* 是指定所有 IP 地址的通配符。

标签: php apache wamp virtualhost httpd.conf


【解决方案1】:

您尚未在任何地方定义http://project2.dev - 只是http://www.project2.dev。因此 Apache 默认回到第一个配置,因为它找不到匹配项。

将以下配置添加到第一个虚拟主机:

ServerAlias project1.dev

这与第二个类似:

ServerAlias project2.dev

然后重新启动 Apache。

【讨论】:

    【解决方案2】:

    简单的答案是,从 Apache 2.4 开始,NameVirtualHost *:80 语法不再需要或允许!它会引发错误并导致 Apache 无法启动。 apache error log查找错误会出现。

    哦,NameVirtualHost \*:80 从来都不是对的!

    所以只需完全删除 NameVirtualHost \*:80 行。

    一旦您定义了虚拟主机,httpd.conf 中的 localhost 就会被忽略,因此您也应该在 httpd-vhost.conf 中定义它,否则其他 2 个 VH def 看起来不错,除了 ServerName 和缺少的 @ 987654330@ 和失踪的Options

    <VirtualHost *:80>
        DocumentRoot "C:/wamp/www/"
        ServerName localhost
        <Directory "C:/wamp/www/">
          Options Indexes FollowSymLinks MultiViews
          AllowOverride all
          Require local
        </Directory>
    </VirtualHost>
    
    
    #
    # Project 1
    #
    
    <VirtualHost *:80>
        DocumentRoot "C:/wamp/www/myProject1/"
        ServerName project1.dev
        ServerAlias www.project1.dev
        ErrorLog "logs/project1-error_log "
        CustomLog "logs/project1-access_log" common
        <Directory "C:/wamp/www/myProject1/">
          AllowOverride all
          Options Indexes FollowSymLinks MultiViews
          Require all granted
        </Directory>
    </VirtualHost>
    
    #
    # Project 2
    #
    
    <VirtualHost *:80>
        DocumentRoot "C:/wamp/www/myProject2/"
        ServerName project2.dev
        ErrorLog "logs/project2-error_log "
        CustomLog "logs/project2-access_log" common
        <Directory "C:/wamp/www/myProject2/">
          AllowOverride all
          Options Indexes FollowSymLinks MultiViews
          Require all granted
        </Directory>
    </VirtualHost>
    

    引用:但是当我在重启 wamp 服务后进行测试时,http://project1.devhttp://project2.dev 都指向 C:/wamp/www/myProject1/

    如果您的 VH 定义中有错误,Apache 将默认使用 httpd-vhosts.conf 中第一个正确定义的 VH,所以这可能会发生

    至于您的HOSTS 文件,它应该包含对 IPV4 和 IPV6 堆栈的引用,尤其是当 windows 似乎越来越多地使用 IPV6 堆栈时,毕竟我们最终要移动到的地方,它不应该包含 @ 987654334@ 所以应该是这样的:-

    #IPV4 stack ip addresses
    127.0.0.1 localhost
    127.0.0.1 project1.dev
    127.0.0.1 project2.dev
    
    #IPV6 stack ip addresses
    ::1 localhost
    ::1 project1.dev
    ::1 project2.dev
    

    更改 HOSTS 文件后,您要么需要重新启动,要么在使用“以管理员身份运行”启动的命令窗口中执行以下操作

    net stop dnscache
    net start dnscache
    

    【讨论】:

      猜你喜欢
      • 2018-05-26
      • 1970-01-01
      • 1970-01-01
      • 2013-07-21
      • 2012-03-27
      • 1970-01-01
      • 1970-01-01
      • 2021-05-03
      • 2011-12-01
      相关资源
      最近更新 更多