【问题标题】:How do I use http2 with Node on Heroku (using Koa)如何在 Heroku 上将 http2 与 Node 一起使用(使用 Koa)
【发布时间】:2021-09-07 12:20:12
【问题描述】:

我有以下代码...

const PORT = process.env.PORT || 5000;
const app = new Koa();
...
app.listen(PORT)

这在本地和 Heroku 中都非常有效。所以现在我想用Http2所以我改成下面...

const server = http2.createSecureServer(
    {
        "key": fs.readFileSync('./server-key.pem'),
        "cert": fs.readFileSync('./server-cert.pem')
    }, 
    app.callback()
)
server.listen(PORT);

这在本地工作正常,但是,当我上传到 Heroku 时,我得到...

2021-06-24T00:43:00.383108+00:00 heroku[router]: at=error code=H13 desc="Connection closed without response" method=GET path="/" host=my-app.herokuapp.com request_id=604f4a2c-8dd2-4cfa-9cf2-3cce5ef76070 fwd="..." dyno=web.1 connect=0ms service=1ms status=503 bytes=0 protocol=https

那么如何让 http2 与 Node、Koa 和 Heroku 一起工作?

【问题讨论】:

标签: node.js heroku http2


【解决方案1】:

根据 devcenter.heroku.com 上的 this article,Heroku 尚不支持 http/2。

【讨论】:

  • 我现在会投票,但没有检查原因并不能真正解决它。
  • @Jackie - 好吧,我们回答了你的问题。 Heroku 还不支持 http/2。所以,也许这不是你想要的答案,但它是你问题的答案。 Heroku 不支持 http/2,除了选择支持的不同托管服务提供商之外,您无能为力。
  • @Jackie 在 Heroku 上一直都是这种情况,而且他们不太可能支持 HTTP/2 - 最好选择更好的托管服务提供商。检查render.com - 它支持开箱即用的 HTTP/2。
【解决方案2】:

您可以使用 https://elements.heroku.com/addons/expeditedwaf 之类的插件,也可以使用 cloudflare。如果您决定使用 cloudflare,请确保在 cloudflare 和 heroku 之间添加 SSL 证书。

【讨论】:

  • 这应该是答案,因为 Heroku 确实不提供开箱即用的 HTTP/2,但您可以使用加急的 WAF 插件。
猜你喜欢
  • 2016-05-04
  • 1970-01-01
  • 2010-10-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-19
  • 2015-08-17
  • 2020-07-09
相关资源
最近更新 更多