如何在node.js中为用户创建子域
问题描述:
我想在我的应用程序的username.domain.com上共享一些用户信息。子域名在用户创建账户后应该可用。如何在node.js中为用户创建子域
我发现不错的模块,可以在这种情况下是有用的:Express Subdomain
如何得当使用这个模块,我可以做什么?也许这个模块不是很有用,所以我应该使用哪一个?
答
正如我在OP评论中提到的那样,在Node前面使用Nginx webserver是非常好的选择,因为这是侦听80端口的安全方式。您还可以更有效地为静态文件(脚本,样式,图像,字体等)提供服务,同时还可以在单个服务器中使用Nginx提供多个站点。
至于你的问题,用Nginx,你可以听example.com
及其所有的子域,然后将子域作为自定义请求头(X-Subdomain
)传递给节点。
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和节点一起的一个简单的例子。你可以看到更详细的例子,并解释here。
我会推荐你在Node前面使用Nginx。 Nginx允许你处理子域而不会有任何问题。 – Curious
此外,启动网络服务器需要监听80端口,这又需要root权限。由于安全考虑,以root权限启动节点是一种不好的做法。但是你可以(也应该)以root身份启动Nginx,并以普通用户身份启动Node。 – Curious