【发布时间】:2016-10-04 19:56:06
【问题描述】:
嗯,我会尽量说得更清楚..
在我用 node.js 编写的应用服务器中,我有多个端口的内部代理:
- 在我的
8080端口我有我的rest api。 - 在我的
3000端口我有我的推送服务器和聊天。
我使用 npm 包 subdomain-router 进行到端口的内部路由,将代理返回到这些端口的“前端”中的子域公开。
代码演示: (<some-app> 显然不是应用的真名)
require('subdomain-router')
({
host: '<some-app>.herokuapp.com',
subdomains:
{
'': 8080, // <some-app>.herokuapp.com <=> ::8080 --WORKS--
'api': 8080, // api.<some-app>.herokuapp.com <=> ::8080
'chat': 3000, // chat.<some-app>.herokuapp.com <=> ::3000
'push': 3000 // push.<some-app>.herokuapp.com <=> ::3000
}
}).listen(process.env.PORT || 5000);
API 工作得很好,虽然我无法通过<some-app>.herokuapp.com:8080 访问它,但只能通过<some-app>.herokuapp.com 并让内部的subdomain-router 模块发挥它的魔力。
另外,我无法访问子域。尝试访问 api.<some-app>.herokuapp.com 时,我从 heroku 收到 No such app 错误页面。
TL;DR 访问 <some-app>.herokuapp.com 有效(重定向到我的 API 的 /v1 路径),但无法访问 <some-app>.herokuapp.com:8080、<some-app>.herokuapp.com:3000 或 chat.<some-app>.herokuapp.com。
当尝试通过在 url 中指定端口来访问我的 API 时(像这样:<some-app>.herokuapp.com:8080),我在浏览器(谷歌浏览器)中收到以下错误:ERR_CONNECTION_REFUSED。
我有根据的猜测说这可能与在 heroku 中打开端口有关,但我不知道该怎么做(尝试谷歌搜索 ofc)。 它并没有解释为什么我无法访问子域。
希望能对此问题有所了解。
我是 heroku 的新手,它变得非常令人沮丧。
谢谢!
阿米特
【问题讨论】:
标签: node.js heroku deployment port subdomain