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