如何配置Nginx以将子域的Vhost配置为proxypass匹配

时间:2018-02-18 06:27:38

标签: nginx

我想要实现的是

如果用户点击了user1.example.com,那么nginx应该在http://127.0.0.1:3001/user1显示应用内容

同样对于user2.example.com,nginx应该在http://127.0.0.1:3001/user2显示应用内容

我应该如何配置vhost块?

当前配置

服务器{     听80;

server_name user1.example.com ;
location / {
    proxy_pass http://127.0.0.1:3001/user1;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection 'upgrade';
    proxy_set_header Host $host;
    proxy_cache_bypass $http_upgrade;
}

}

和其他用户的类似块,我得到的问题是任何未定义的块,如果没有定义user3.example.com块,则使用第一个块。我想为未定义的路由设置默认块,我该怎么做?

此外,我正在根据需要动态地通过脚本制作服务器块并重新加载服务器。

1 个答案:

答案 0 :(得分:0)

不是为每个用户编写一个块,而是为什么不动态地执行它。

server {
    server_name     ~^(?<subdomain>\w+)\.example\.com$;
    location / {
            proxy_pass https://127.0.0.1:3001/$subdomain ;
    }
}

所以当你点击: user1.example.com =&gt; http://127.0.0.1:3001/user1