【问题标题】:Can I have node.js listen on a non-standard port when hosted on Heroku?在 Heroku 上托管时,我可以让 node.js 在非标准端口上侦听吗?
【发布时间】:2013-11-19 08:57:57
【问题描述】:

我正在构建一个 node.js 应用程序并尝试将其托管在 Heroku 上。似乎为了让我的应用程序对全世界可用,我需要像这样倾听:

app.listen(process.env.PORT || 3000);

我想让我的应用在端口 8080 上侦听。这在 Heroku 中是否可行?我可以更改 process.env.port 的值吗?这似乎是某种我可能无法控制的反向代理。

【问题讨论】:

    标签: node.js heroku port


    【解决方案1】:

    没有。 Heroku 告诉您的应用程序需要监听哪个端口。 Heroku 和您的应用程序之间所需的接口是PORT 环境变量:您的应用程序必须查找并使用它。除了 Heroku 告诉您的应用程序必须侦听的端口之外,您的应用程序无法侦听任何其他端口。 Heroku 尝试在该端口上打开与您的应用程序的 TCP 连接,如果自 Heroku 启动您的应用程序后 60 秒后您的应用程序未在该端口上侦听,Heroku 会认为您的应用程序已损坏并将其关闭。

    【讨论】:

    • 呸——这就是我所害怕的。猜猜我接下来会检查 Joyent 智能机器。
    • 还有一个问题 - 我可以在端口 443 上监听 SSL 吗?是否有 env.SSLPORT 类型的环境变量?
    • 不,您的应用程序不处理 SSL。 Heroku 在 Heroku 路由层中提供(作为附加服务)反向代理,具有自己的 IP 地址,并将您的证书和私钥复制到该反向代理上。该反向代理终止来自浏览器的 SSL 连接,并将 HTTP 请求转发到您的一个未加密的测功机。您的应用程序 dyno 将监听 Heroku 告诉它监听的某个随机高端口(如端口 32,654),并且 Heroku 路由层知道将 HTTP 请求转发到您在该端口上监听的应用程序。
    猜你喜欢
    • 2011-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-29
    • 2020-05-01
    • 2018-08-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多