当前位置: 首页 > 后端技术 > Node.js

Apache虚拟主机中的ServerName指令

时间:2023-04-03 13:47:22 Node.js

术语虚拟主机(Virtualhost)指的是在一台机器上运行多个网站(如company1.example.com和company2.example.com)的做法。Web托管可以是“基于IP”的,这意味着每个网站都有不同的IP地址,也可以是“基于名称的”,这意味着多个名称在每个IP地址上运行。它们运行在同一台物理服务器上这一事实对最终用户来说并不明显。用于包含一组仅适用于特定虚拟主机的指令。可以使用虚拟主机上下文中允许的任何指令。当服务器收到对特定虚拟主机上的文档的请求时,它会使用部分中包含的配置指令。Addr可以是以下任何一种,可以选择后跟一个冒号和一个端口号(或*)。ServerName指令:ServerName指令设置请求方案、主机名和服务器用来标识自己的端口。当使用基于名称的虚拟主机时,使用ServerName(可能与ServerAlias结合使用)来唯一标识虚拟主机。此外,当UseCanonicalName设置为默认值以外的值时,它会在创建自引用重定向URL时使用。例如,如果托管Web服务器的机器的名称是simple.example.com,但该机器也有DNS别名www.example.com,并且您想要这样标识Web服务器,您可以使用以下命令指令:ServerNamewww.example.comServerName指令将出现在服务器定义中的任何位置。但是,每个皮肤都会覆盖以前的皮肤(在该服务器内)。如果未指定ServerName,服务器会尝试通过首先向操作系统询问系统主机名来推断客户端可见的主机名,如果失败,则对系统上存在的IP地址执行反向查找。如果未在ServerName中指定端口,服务器将使用来自传入请求的端口。为了获得最佳的可靠性和可预测性,您应该使用ServerName指令指定一个明确的主机名和端口。如果您使用的是基于名称的虚拟主机,则部分中指定的ServerName必须出现在请求的Host:标头中以匹配虚拟主机。有时服务器在处理SSL的设备后面运行,例如反向代理、负载平衡器或SSL卸载设备。在这种情况下,请在ServerName指令中指定客户端连接的https://方案和端口号,以确保服务器生成正确的自引用URL。一个例子: