Peter Green Asked: 2020-12-24 00:53:16 +0800 CST2020-12-24 00:53:16 +0800 CST 2020-12-24 00:53:16 +0800 CST 是否有必要为 http 和 https 使用单独的虚拟主机块 772 每个站点的 http 和 https 版本是否需要单独的虚拟主机块?或者有什么方法可以避免重复? apache2 2 个回答 Voted Bob 2020-12-24T01:08:20+08:002020-12-24T01:08:20+08:00 例如,与 nginx 中的服务器块不同,它可以在单个服务器块中同时支持 http和https 定义(每个都在不同的端口上),Apache VirtualHost 只有一个切换。 该SSLEngine指令为整个 VirtualHost 打开或关闭 TLS。 (该SSLEngine optional设置更多的是一种好奇心,而不是从单个 VirtualHost 块支持纯 http 和 https 的有效生产选项。) 当尝试使用纯 http 连接到 Apache https IP 地址和端口组合时,您将收到协议错误,反之亦然,当在纯 http 端口上使用 https 时。 Best Answer Peter Green 2020-12-24T00:53:16+08:002020-12-24T00:53:16+08:00 根据我的测试,似乎有必要为每个端口上的默认虚拟主机设置单独的虚拟主机块,但辅助虚拟主机可以对普通 http 和 https 使用相同的虚拟主机块。 但是,必须使用明确的端口列表(例如 *:80 *:443)指定这些辅助虚拟主机,而不仅仅是使用普通通配符。
例如,与 nginx 中的服务器块不同,它可以在单个服务器块中同时支持 http和https 定义(每个都在不同的端口上),Apache VirtualHost 只有一个切换。
该
SSLEngine
指令为整个 VirtualHost 打开或关闭 TLS。(该
SSLEngine optional
设置更多的是一种好奇心,而不是从单个 VirtualHost 块支持纯 http 和 https 的有效生产选项。)当尝试使用纯 http 连接到 Apache https IP 地址和端口组合时,您将收到协议错误,反之亦然,当在纯 http 端口上使用 https 时。
根据我的测试,似乎有必要为每个端口上的默认虚拟主机设置单独的虚拟主机块,但辅助虚拟主机可以对普通 http 和 https 使用相同的虚拟主机块。
但是,必须使用明确的端口列表(例如 *:80 *:443)指定这些辅助虚拟主机,而不仅仅是使用普通通配符。