nginx:所有命名的子域都指向相同的名称子目录,没有返回浏览器的信息

nginx:所有命名的子域都指向相同的名称子目录,没有返回浏览器的信息,nginx,Nginx,在之前的许多帖子中,我都迫不及待地接近找到答案,但没有什么是完美的。因此,请原谅我再次提出这个问题。我认为这可能是一个相当常见的问题,因此值得得到一个简洁的答案 (1) 我(也)想在我的Web服务器上使用子目录,即使浏览器一直认为它在处理子域。也就是说,我不希望浏览器从服务器接收301[因此没有返回指令]。(2) 我不想指定域列表。我希望它对所有人都有效 具体来说,我希望nginx将所有$1.example.com解释为example.com/$1/,而不指定$1可能是什么。因此,在浏览器中,应

在之前的许多帖子中,我都迫不及待地接近找到答案,但没有什么是完美的。因此,请原谅我再次提出这个问题。我认为这可能是一个相当常见的问题,因此值得得到一个简洁的答案

(1) 我(也)想在我的Web服务器上使用子目录,即使浏览器一直认为它在处理子域。也就是说,我不希望浏览器从服务器接收301[因此没有返回指令]。(2) 我不想指定域列表。我希望它对所有人都有效

具体来说,我希望nginx将所有$1.example.com解释为example.com/$1/,而不指定$1可能是什么。因此,在浏览器中,应该始终检索与相同的页面和http代码。这也应适用于所有子文件。应产生与相同的结果。这不是位置重新映射,而是url重新映射。但是,如果/var/www/example.com/是我的顶级目录,那么这可能会提供/var/www/example.com/funcy/d1/p1.html

从浏览器的角度来看,他们只是碰巧看到了和的完全相同的页面

感谢您的解决方案

根据和尝试以下内容

服务器{
#子域配置,与正则表达式*.example.com匹配
服务器名称~^(?.+)\.example\.com$;
地点/{
root/var/www/examples.com/fully/$sub_domain;
}
}
服务器{
#全包配置
服务器名称;
地点/{
root/var/www/examples.com;
}
}

谢谢。工作,除了//需要#。我还详细说明了服务器名称和两个服务器块的相反顺序,但两者都不重要。欢迎您的评论,谢谢您的评论,我已更新了答案以反映您的评论。
server {
    # sub domains config, match with regular expression *.example.com
    server_name ~^(?<sub_domain>.+)\.example\.com$;
    location / {
        root /var/www/examples.com/funny/$sub_domain;
    }
}

server {
    # catch all config
    server_name _;

    location / {
        root /var/www/examples.com;
    }
}