You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Web服务器如何定位请求域名对应的网站目录?

Web服务器匹配域名对应站点目录的核心逻辑

你猜测的域名到目录的映射配置是真实存在的,整套机制的运行逻辑非常清晰:

核心依据:请求自带的域名标识

你输入stackoverflow.com发起请求时,请求到达服务器前就已经携带了要访问的域名信息:

  • 走HTTP协议时,请求头里会固定携带Host字段,值就是你访问的域名,比如Host: stackoverflow.com
  • 走HTTPS协议时,在TLS握手阶段就会通过SNI(服务器名称指示)扩展把要访问的域名发给服务器,服务器不需要解密HTTP内容就能拿到域名信息,还能提前匹配对应的SSL证书。

匹配规则:虚拟主机配置

所有主流Web服务器(Nginx、Apache、IIS、Caddy等)都是通过虚拟主机配置实现域名和资源的映射,核心逻辑是:

  • 管理员提前在服务器上配置多组虚拟主机规则,每组规则绑定对应的域名列表,同时指定该域名对应的站点根目录(比如Nginx用root指令指定路径,Apache用DocumentRoot配置指定路径)
  • 请求到达服务器后,Web服务器会先提取请求里携带的域名,按照配置的优先级遍历所有虚拟主机规则,找到匹配对应域名的规则后,就会去该规则指定的目录下查找请求对应的资源返回
  • 如果没有任何规则匹配当前请求的域名,服务器会走默认虚拟主机的配置,返回默认站点的内容,通常是服务器的默认测试页,或是配置顺序排在最前面的站点内容。

举个最简化的Nginx配置示例:

# 为stackoverflow.com配置的虚拟主机
server {
    listen 80;
    server_name stackoverflow.com;
    # 该域名对应的站点根目录
    root /var/www/sites/stackoverflow;
    index index.html index.php;
}

# 为serverfault.com配置的独立虚拟主机
server {
    listen 80;
    server_name serverfault.com;
    # 对应完全独立的站点目录
    root /var/www/sites/serverfault;
    index index.html index.php;
}

现在很多场景下Web服务器会做反向代理使用,这时候不一定会映射到本地磁盘目录,也可能根据匹配到的域名把请求转发到后端不同端口运行的服务,核心路由逻辑和映射本地目录是完全一致的。


内容的提问来源于stack exchange,提问作者frissmeinco

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.01 05:01:02