nginx - 子域作为查询字符串参数?

nginx - Subdomain as querystring parameter?

我有一个简单的单页 Web 应用程序,它接受一个查询字符串参数 name。此 Web 应用程序当前打印参数的值;因此,位于 http://example.com/app/?name=person1 的页面显示文本 person1.

我想使用 nginx 在内部将请求路由到 http://person1.example.com/http://example.com/app/?name=person1,以便检索相同的文本。

理想情况下,我还想让子域的名称可用于 PHP 或 Node.js 进程,以便在不同的子域中重用相同的应用程序文件,从而允许应用程序本身根据客户端当前正在访问的 URL 在内部处理请求。

但是,我想动态地执行此操作,而无需为每个子域设置新的虚拟主机。

这可以用 nginx 上的动态虚拟主机来完成吗?如果可以,怎么做? 谁能指出我正确的方向,或帮助解释我难以理解的内容?

此外,是否有比我尝试做的更好的替代方案?

如果外部重定向没问题,我会尝试如下操作:

map $host $subdomain {
    ~^(?<sub>.+)\.[^\.]+\.[^\.]+$ $sub;
}

server {
    listen  80  default_server;
    server_name _;

    if ($subdomain) {
        return 301 http://example.com/app/?name=$subdomain;
    }
}

如果需要内部重定向,可能需要重写或proxy_pass。