【问题标题】:Node.js subdomainsNode.js 子域
【发布时间】:2013-04-03 12:15:24
【问题描述】:

我正在尝试让我的 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')))

但这仍然只服务于我在下面导入的主要路线。我错过了什么?

【问题讨论】:

  • ./lib/subdomains/api 里面有什么内容?
  • 类似于this Gist 的事情我曾经尝试做的事情是app.use(express.vhost('api.example.com', require('./lib/subdomains/api').app))
  • 这是一个gist,对我来说很好用。您是在浏览器中还是使用 CLI 工具进行检查?如果是后者,它是否发送正确的Host 标头?
  • 在浏览器中。你的代码和我的一样,除了我在我的app.configure下面这个require('./lib/routes')(app);app有可能发生冲突吗?
  • /var/vhosts 可以是 Apache 的东西吗?我刚刚意识到,通常,要创建新的主机条目,您需要编辑 /etc/hostsapp 不应该发生冲突,Node 具有模块范围,因此一个模块中的 app 与另一个模块中的 app 是分开的。

标签: node.js express subdomain


【解决方案1】:

如果其他人发现此问题,您可能需要检查是否以正确的方式传递虚拟主机路由参数。

我正在使用:

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

什么时候应该。回调函数的第一个参数是req,然后第二个参数是res

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

认真编写代码 :)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-02
    • 1970-01-01
    • 2014-12-07
    • 1970-01-01
    • 2013-05-21
    • 1970-01-01
    • 2015-09-06
    • 1970-01-01
    相关资源
    最近更新 更多