【问题标题】:Our Heroku server port 443 is blocked我们的 Heroku 服务器端口 443 被阻塞
【发布时间】:2021-08-13 02:16:34
【问题描述】:

我们的 Heroku 机器自动启动,之后我们的 API 无法访问,我检查了日志,它说:Relocating dyno to a new server,所以机器出了点问题,日志显示我的节点进程正在运行,但是无法访问通过 https 或 http 的 API,当我运行 ss -tulw 时,它显示 443 和 80 都没有在监听,而且我在机器上找不到打开端口的方法,在 heroku 机器上,我没有更改 bash_profile 或导出 PORT=443 的方法,因为不允许从机器内部启动节点进程,我只能通过使用“git push heroku master”,process.env 重新部署来启动我们的节点进程。每次重新部署我的节点进程时,PORT 都会显示不同的端口,我们的应用程序已经完全无法被我们的客户访问两天了,我们在 heroku 支持中心创建了一张票,但是两天没有人采取行动,请帮忙。谢谢!

【问题讨论】:

    标签: node.js heroku


    【解决方案1】:

    您不能在测功机上打开端口。 Dynos 在 443 或 80 上监听。

    Dyno 被 Heroku 分配了一个端口。您应该在应用程序启动时绑定到该端口。

    您的 repo 中应该有一个 Procfile,它可以在正确的端口上启动应用程序,例如:

    web: npm run server -- --port $PORT
    

    更多信息:

    【讨论】:

    • 感谢您的回答,我的网站在前两天发生“将dyno迁移到新服务器”之前已经可以访问一年多了,代码如下:var port = normalizePort(process. env.PORT || '3100'); app.set('端口', 端口); var server = http.createServer(app); server.listen(端口); server.on('监听', onListening);我的 procfile 只有一行: web: DEBUG=./:* npm start 因为它不再工作了,所以我尝试设置配置变量,将 Procfile 更改为 web: DEBUG=./:* npm start -- --port $PORT 或使用 443 或 80,但没有任何效果。那么有什么线索吗?谢谢
    • "你的 repo 中应该有一个 Procfile,它在正确的端口上启动应用程序" 那么正确的端口是什么或在哪里设置呢?当我登录 console.debug('Env process.env.PORT: ', process.env.PORT);它打印出任意端口,为什么测功机重新定位到新服务器后,我的网站突然变得无法访问?我没有更改任何代码,也没有接触服务器,然后突然无法访问。非常感谢您的帮助!
    • 另外,当我的网站在过去一年工作时,我使用带有默认 443 的 https 进行访问,它运行良好,现在相同的 url 不再工作,我什至没有触摸服务器也没有重新部署,并且只发现日志消息:“relocating dyno to a new server”,很奇怪,看来我没有完全控制机器的付费计划,到目前为止,我的票没有得到公司的支持。
    • 再一次:你没有设置端口。您在日志中看到的“任意”端口是您在应用程序中使用 process.env.PORT 绑定的端口。这就对了。 Heroku 路由器监听 443 并在这个“任意”端口上将请求路由到您的应用程序。如果您的应用程序在网络上不可见,那么这可能完全是另一个问题。您是否尝试过从不同的 DNS 访问您的应用程序?请求是否到达 Heroku 路由器?
    • 你是对的,支持说他们的路由器有问题,现在已经解决了。非常感谢您的帮助。
    猜你喜欢
    • 2016-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-09
    • 2015-06-21
    相关资源
    最近更新 更多