Heroku + node.js:我有一个使用多个端口的服务器。 我怎样才能让Heroku分配它们?

呃我会尽量做得更清楚..

在我用node.js编写的应用程序服务器中,我有多个端口的内部代理:

  • 在我的8080端口,我有我的restapi
  • 在我的3000端口我有我的推服务器和聊天

我使用npm软件包的子域路由器进行内部路由到端口,公开了代理端口的“前端”中的子域。
代码演示: <some-app>显然不是<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); 

尽pipe我无法通过<some-app>.herokuapp.com:8080访问它,但只能通过<some-app>.herokuapp.com访问它,并让内部的subdomain-router模块达到这个效果。
另外,我无法访问子域名。 当试图访问api.<some-app>.herokuapp.com我从heroku得到No such app错误页面。

TL;访问<some-app>.herokuapp.com DR (redirect到我的API的/v1path),但无法访问<some-app>.herokuapp.com:8080<some-app>.herokuapp.com:3000chat.<some-app>.herokuapp.com

当试图通过指定URL中的端口来访问我的API( 如: <some-app>.herokuapp.com:8080 )时,我的浏览器(google chrome)中出现以下错误: ERR_CONNECTION_REFUSED

我的教育猜测说,这可能是有关开放端口 heroku,但我不知道如何做到这一点(尝试谷歌search)。
这并不能解释为什么我不能访问子域。

希望能够解决这个问题。
我对heroku很陌生,而且越来越让人沮丧。

谢谢!
阿米特

好的,在做了一些研究之后,我发现Heroku中的开放端口是禁用的不允许的

唯一的解决方法是使用子域名 ,然后在应用程序中使用代理模块(如我使用的subdomain-router )。

但是 – Heroku不允许你在他们的域上创build子域名,这意味着你的 – your-app.herokuapp.com是固定的,不能有子域名。
在Heroku手册中,他们要求你有自己的域和DNS提供者来做这样的事情,在域设置的dns表中创build一个别名(CNAME),它将引用你的应用程序herokuapp域,然后使用heroku domains:add命令heroku domains:add将您的域heroku domains:add到允许的源列表。

你可以在这里阅读更多。 它提供了所有你需要的信息。

希望这有助于一些。

今天我也了解到了这一点,我了解到如果你在Heroku的一个端口上运行一个服务,你仍然可以在本地访问它。 不会为上面的用户的关心工作,但它确实解决了我的问题,导致我这个问题。