【发布时间】:2019-02-11 03:16:48
【问题描述】:
我正在尝试在 Heroku 中部署提供 HTTP/2 支持的 one of the actix-web 示例,在稍微修改它以侦听提供的 $PORT 编号以及加载证书的方式之后——而不是从文件中读取,它从环境中获取公钥和私钥。
问题在于,对于每个请求,Heroku 路由器都会记录连接已关闭而没有响应。
heroku[router]:
at=error
code=H13
desc="Connection closed without response"
method=GET
status=503
bytes=0
protocol=https
由于它在本地工作,我怀疑问题出在我的 dyno 的配置上,这是一个爱好(7 美元/月),尤其是在证书部分。由于应用程序希望从环境变量中接收证书信息,并且 Heroku 不会为您提供对其证书的访问权限(例如 xxxxx.herokuapp.com 的证书),因此我购买了一个域名,希望能够生成自己的域名。我做到了,使用following page。
使用自行生成的证书,到目前为止我已经尝试了以下方法,导致出现以下错误:
- 为测功机和应用程序提供相同的密钥对。日志产生上述错误。
- 不向测功机提供 SSL 配置,而是向应用程序提供 SSL 配置。因此,
https访问被禁用,甚至没有命中测功机。 - 不向应用程序提供证书配置,而是向测功机提供证书配置。应用在启动时崩溃。
但是,如果我删除相关的rustls 行,一切正常,但使用的协议是HTTP/1.1。
因此,我想请问您:
- 让应用程序期望加载证书有什么根本上的坏处吗?
- 我应该尝试其他提供商吗? (例如 DigitalOcean、AWS、谷歌云)
- 您知道什么可以使它在 Heroku 中工作吗?
【问题讨论】:
标签: heroku rust http2 actix-web