如何在node.js中为用户创建子域

时间:2015-06-20 07:29:25

标签: javascript node.js express

我想在我的应用程序的username.domain.com上分享一些用户信息。用户创建帐户后,子域名应该可用。

我找到了很好的模块,在这种情况下很有用:Express Subdomain

如何正确使用该模块?也许这个模块不是那么有用,我应该使用哪一个?

1 个答案:

答案 0 :(得分:10)

正如我在OP评论中提到的,在Node前面使用Nginx webserver是非常好的选择,因为这是一种安全的方式来监听80端口。您还可以使用Nginx更有效地提供静态文件(脚本,样式,图像,字体等),以及在单个服务器中拥有多个站点。

关于您的问题,使用Nginx,您可以同时监听example.com及其所有子域,然后将子域作为自定义请求标头(X-Subdomain)传递给Node。

<强> example.com.conf:

server {
    listen          *:80;
    server_name     example.com   *.example.com;

    set $subdomain "";
    if ($host ~ ^(.*)\.example\.com$) {
        set $subdomain $1;
    }

    location / {
        proxy_pass          http://127.0.0.1:3000;
        proxy_set_header    X-Subdomain     $subdomain;
    }
}

<强> app.js:

var express = require('express');
var app = express();

app.get('/', function(req, res) {
    res.end('Subdomain: ' + req.headers['x-subdomain']);
});

app.listen(3000);

这是一起使用Nginx和Node的简短示例。您可以通过解释here查看更详细的示例。