Heroku + node.js:我有一台使用多个端口的服务器。如何让Heroku分配它们?

2023-04-07 17:20

好的,经过研究后,我发现Heroku中的开放端口已被 并且是 。

解决此问题的 是使用 ,然后在应用程序内使用代理模块(例如subdomain-router我使用的代理模块)。

-Heroku不允许您在其域上创建子域,这意味着它your-app.herokuapp.com是固定的,不能有子域。 在Heroku手册中,他们要求您拥有自己的域和dns提供程序来执行此操作,方法是在域设置的dns表中创建一个A别名(CNAME),该别名将引用您的应用程序herokuapp域,然后使用heroku domains:add用于将您的域添加到允许的来源列表的命令。

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

希望它对一些人有所帮助。

嗯,我会尽量清楚一点。

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

  • 在我的8080港口,我有 休息用的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.comNo such app从heroku中获取错误页面。

TL; DR 访问<some-app>.herokuapp.com作品(重定向到/v1路径为我的API),但无法访问<some- app>.herokuapp.com:8080<some-app>.herokuapp.com:3000chat.<some- app>.herokuapp.com

尝试通过在url中指定端口来访问我的API( 例如<some- app>.herokuapp.com:8080:)时,在浏览器(谷歌浏览器)中出现以下错误:ERR_CONNECTION_REFUSED

根据我的推测 ,这可能与在heroku中 打开端口 有关,但是我不知道如何执行此操作(尝试使用谷歌搜索功能)。
它没有解释为什么我不能访问子域。

希望您能对此问题有所启发。
我是heroku的新手,真让人感到沮丧。

谢谢!
阿米特