VirtualHost
我对将端口放入和放入指令之间的区别感到困惑HostName
。
以下两者有何区别:
<VirtualHost *:8123>
ServerName www.example.com
</VirtualHost>
和
<VirtualHost *:*>
ServerName www.example.com:8123
</VirtualHost>
?
答案1
这基于名称的虚拟主机支持解释匹配顺序:
当请求到达时,服务器将
<VirtualHost>
根据请求使用的 IP 地址和端口找到最佳(最具体)匹配参数。如果有多个虚拟主机包含此最佳匹配地址和端口组合,Apache 将进一步将ServerName
和ServerAlias
指令与请求中存在的服务器名称进行比较。
通常,有端口同时为 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。