gpt4 book ai didi

node.js - Heroku + node.js : I have a server which uses multiple ports. 如何让 Heroku 分配它们?

转载 作者:IT老高 更新时间:2023-10-28 22:08:36 27 4
gpt4 key购买 nike

嗯,我会尽量说得更清楚..

在我用 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 时我得到 No such app来自 heroku 的错误页面。

TL;DR 访问 <some-app>.herokuapp.com有效(重定向到我的 API 的 /v1 路径),但无法访问 <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 中打开端口有关,但我不知道该怎么做(尝试谷歌搜索 ofc)。< br/>它并没有解释为什么我无法访问子域。

希望能对此问题有所了解。
我是 heroku 的新手,它变得非常令人沮丧。

谢谢!
阿米特

最佳答案

好的,经过一番研究,我发现在 Heroku 中打开端口是禁用并且不允许

解决此问题的唯一方法是使用子域,然后在应用内使用代理模块(如subdomain-router我用的)。

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

您可以阅读更多 here .它提供了您需要的所有信息。

希望对一些人有所帮助。

关于node.js - Heroku + node.js : I have a server which uses multiple ports. 如何让 Heroku 分配它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37636580/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com