Node.js子域名

6

我想让我的基于Node.js的网站在一个实例上为多个域名提供服务。我有一个主域名:example.com,还有admin.example.comapi.example.com,它们都有不同的路由等,我正在使用Express。

到目前为止,我已经为子域名添加了两个A记录,并在我的CentOS服务器上的/var/vhosts中添加了两个条目。

127.0.0.1 api.example.com
127.0.0.1 admin.example.com
127.0.0.1 example.com

我知道Express有一个express.vhost方法,所以我已经尝试过:

app.use(express.vhost('api.example.com', require('./lib/subdomains/api')))
app.use(express.vhost('admin.example.com', require('./lib/subdomains/admin')))

但这仍然只服务于我的主要路线,如下所述。我错过了什么?

这是一个我用得很好的gist。你是在浏览器中检查还是使用CLI工具?如果是后者,它是否发送了正确的“Host”头? - robertklep
在浏览器中,你的代码和我的一样,除了我在app.configure下面加了这个require('./lib/routes')(app);。可能是app发生了冲突吗? - James
如果您尝试打开 api.example.com 没有收到任何错误提示,那么您的浏览器可以很好地解析它,所以这可能不是您问题的原因 :) - robertklep
我已经完成了,但它解析到了主站点路由。 - James
我唯一看到这个会失败的方式是如果你在app.configure之前声明任何路由。否则,它看起来很好(对我来说也可以正常工作)。 - robertklep
显示剩余8条评论
1个回答

9

如果有其他人看到这个问题,您可能需要确认您正确传递了虚拟主机路由参数。

我之前使用的是:

app.get('/', function(res, req) { /* Do stuff.. */ }

在这种情况下,回调函数的第一个参数是req,第二个参数是res

app.get('/', function(req, res) { /* Do stuff.. */ }

要认真对待你的代码 :)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接