Apache 虚拟主机上端口的正确位置

Apache 虚拟主机上端口的正确位置

VirtualHost我对将端口放入和放入指令之间的区别感到困惑HostName

以下两者有何区别:

<VirtualHost *:8123>
    ServerName www.example.com
</VirtualHost>

<VirtualHost *:*>
    ServerName www.example.com:8123
</VirtualHost>

答案1

基于名称的虚拟主机支持解释匹配顺序:

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

通常,有端口同时为 HTTP 和 HTTPS 站点提供服务。(目前,HTTP 主要用于重定向到 HTTPS。)必须在端口上启用或禁用 TLS;单个端口无法同时为 TLS 和非 TLS 请求提供服务。这是使用以下端口的一个具体原因:

<VirtualHost *:8123>
    ServerName www.example.com
</VirtualHost>

ServerName有可选的方案港口

句法:ServerName [scheme://]domain-name|ip-address[:port]

但是,这是针对特定情况的:

有时,服务器会在处理 SSL 的设备(例如反向代理、负载平衡器或 SSL 卸载设备)后面运行。在这种情况下,请https://在指令中指定客户端连接的方案和端口号,ServerName以确保服务器生成正确的自引用 URL。

相关内容