无法访问 Heroku 上的 Web 服务器

Posted

技术标签:

【中文标题】无法访问 Heroku 上的 Web 服务器【英文标题】:Unable to access web server on Heroku 【发布时间】:2019-09-27 13:33:10 【问题描述】:

我关注this tutorial/guide。在本地,它使用localhost 作为域,8080 作为端口。

这是本地配置:

"dashboard" : 
    "oauthSecret": `$process.env.oauthSecret`,
    "callbackURL": `http://localhost:8080/callback`,
    "sessionSecret": "fakesessionsecret",
    "domain": "localhost",
    "port": 8080
  ,

但是现在,我想在 Heroku 上使用该应用程序,并通过 https://project-name.herokuapp.com 或通过我已经链接到提供的 DNS 的自定义域访问 Web 仪表板,格式为 dashboard.example.com

localhost 和/或该端口不适用于 Heroku,因此我不确定将其更改为什么才能使其正常工作。我已经尝试将域更改为xxx.herokudns.com,将端口更改为process.env.PORT,将域更改为我在 Heroku 中设置的自定义域 - 但是当我访问 URL 时,它们都会导致应用程序崩溃,状态为 503

据我所知,这些代码中使用了配置域和端口:

const express = require("express");
const app = express();
const passport = require("passport");

passport.use(new Strategy(
    clientID: client.appInfo.id,
    clientSecret: config.dashboard.oauthSecret, //from configuration
    callbackURL: config.dashboard.callbackURL, //from configuration
    scope: ["identify", "guilds"]
  
...
app.locals.domain = config.dashboard.domain;
...
app.listen(client.config.dashboard.port);

那么如何从 Heroku 访问 Web 应用程序?

【问题讨论】:

当您收到 503 时,您是否正在检查您的 Heroku 日志?域应为"dashboard.example.com",端口应为process.env.PORT。更好的是,使用dotenv 和.env 文件在本地定义您的环境变量,并使用Heroku 的“设置”选项卡来设置生产环境变量(在这种情况下,只是domain - port 已经设置在每次应用启动时为您服务)。 感谢您的建议,这确实有效。如果您介意,请回答问题,以便我将其标记为已解决! 很高兴它有帮助! 【参考方案1】:

当您收到 503 时,您是否正在检查您的 Heroku 日志?他们应该提供有关导致崩溃的具体信息。

域应为dashboard.example.com,端口应为process.env.PORT。更好的是,使用 dotenv 和 .env 文件在本地定义环境变量,并使用 Heroku 的“设置”选项卡在生产环境中设置环境变量(在这种情况下,只是 domain - port 已经设置为您在每次应用启动时)。

【讨论】:

以上是关于无法访问 Heroku 上的 Web 服务器的主要内容,如果未能解决你的问题,请参考以下文章

无法推送到 Heroku '致命:无法访问..无法解析主机:(无);提供节点名或服务名,或未知'

解决主机无法通过网络访问虚拟机的问题

Heroku 上的 Laravel 5.4。 Forbidden 您无权访问此服务器上的 /

Heroku / Clojure 部署上的端口错误

无法从本地网络上的 Web 服务器访问 localhost

错误 R10(启动超时)-> Web 进程在启动后 60 秒内无法绑定到 $PORT - Heroku