Apache 2.4.6 中的 NameVirtualHost 指令等效?

NameVirtualHost directive equivalent in Apache 2.4.6?

Overview of new features in Apache HTTP Server 2.4 状态:

NameVirtualHost directive:
No longer needed and is now deprecated.

有人可以解释在新版本的 Apache 中产生这种行为的虚拟主机等效语法吗?


<VirtualHost 127.0.0.3:80>
    DocumentRoot /var/www/html3
    ServerName site3.com
</VirtualHost>

<VirtualHost 127.0.0.3:80>
    DocumentRoot /var/www/html4
    ServerName site4.com
</VirtualHost>

我向大家道歉,但我已经摧毁了这个服务器,所以无法提供配置文件:(

仅供参考 我已经在网上看到一个示例,该示例将服务器名称放在 VirtualHost header 中,如下所示,这可能是问题所在,但在我有机会之前我无法知道这一点将来某个时候测试它/

<VirtualHost site3.com:80>
    DocumentRoot /var/www/html3
</VirtualHost>

您的配置是正确的,并且会自动运行,就好像 "NameVirtualHost 127.0.0.3:80" 存在一样。如果 http://site4.com 似乎是默认虚拟主机:

  • 确保你实际测试的是“http://site4.com
  • 确认不是浏览器缓存
  • 尝试命令行客户端
  • 确保磁盘上的内容确实不同

我同意@covener。 Apache 根据它为 IP address/port 组合检测到的有效虚拟主机块数来启用 SNI。你的问题最好在 apache 的官方文档中得到解答:

https://httpd.apache.org/docs/2.4/vhosts/details.html

但是,对于完整的 NameVirtualHost 行为,要么选择一个将流量路由到您的服务器的内部 IP(在所有 vhost 配置块中使用相同的 IP),要么使用通配符 (*):

<VirtualHost *:80>
<VirtualHost *:443>

我个人使用通配符语法,在我自己的服务器上有大约 10 种不同的虚拟主机配置。

编辑: 我刚刚意识到这个 post 已经 4 岁了。