【问题标题】:Apache VirtualHost SyntaxApache 虚拟主机语法
【发布时间】:2021-09-06 09:58:45
【问题描述】:

这个:

<VirtualHost subdomain.example.com:443> 
... 
ServerName subdomain.example.com
...
</VirtualHost>

有效。通常你会看到 *:443 或 &lt;IpAdress&gt;:443

为什么 subdomain.example.com:443 有效?

【问题讨论】:

  • 为什么它不能工作?

标签: apache virtualhost


【解决方案1】:

因为subdomain.example.com:443valid documented value,所以它有效:

<VirtualHost addr[:port] [addr[:port]] ...> ... </VirtualHost>

Addr 可以是以下任何一种,可选地后跟冒号和端口号(或 *)

  • 虚拟主机的IP地址;
  • 虚拟主机 IP 地址的完全限定域名(不推荐);
  • 字符 *,用作通配符并匹配任何 IP 地址。
  • 字符串_default_,它是*的别名

我知道不推荐使用域名,因为它可能需要 DNS 查询,并且实际过滤是对 IP 地址进行的(我只是在猜测,对此持怀疑态度)但它仍然有效。

请注意,这不会影响 Apache 将侦听的本地 IP 地址和端口。它仅允许在您需要时加快虚拟主机解析并简化设置。

【讨论】:

    【解决方案2】:

    注意:

    <VirtualHost subdomain.example.com:443> 
    

    subdomain.example.com 解析为您的虚拟主机绑定到的 IP 地址时有效 - 例如由部署了 Apache 的服务器处理的 IP 地址。

    如果您在另一台机器上运行反向代理,那么该指令会告诉 Apache httpd 绑定到它所在的机器上不可用的 IP 地址。

    如果您正在运行 IPV4 IPV6,我不确定域名是否会导致所有个可用地址被绑定。同样,如果域名绑定到多个地址(地理定位或循环)

    因此,虽然它现在可能起作用,但它可能会在所有这些假设不再(全部)为真时打破任何时候

    简而言之:绑定到 *_default_ 并使用 ServerName(或别名) - 因为一旦请求到达您的网络服务器,您无论如何都需要处理它。

    【讨论】:

      猜你喜欢
      • 2011-06-19
      • 2019-08-25
      • 2012-04-26
      • 2012-09-25
      • 2011-03-25
      • 2018-06-26
      • 2019-03-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多