heroku 配置托管在hreoku上的FastAPI应用程序以使用HTTPS

pvcm50d1  于 2023-03-12  发布在  其他
关注(0)|答案(1)|浏览(128)

我有一个安装在FastAPI应用程序上的Gradio应用程序,并托管在Heroku上,该应用程序应该请求音频输入权限。本地工作,但这不是生产的情况。通过一些研究,我发现浏览器通过http阻止这种权限(你能确认吗?),所以我认为我必须配置uvicorn运行https。我在documentation中发现了这一点

$ uvicorn example:app --port 5000 --ssl-keyfile=./key.pem --ssl-certfile=./cert.pem

我怎样才能访问heroku中的ssl文件。这是我应该做的吗?有人能帮我吗?

db2dz4w8

db2dz4w81#

这不是Uvicorn的责任。
如果您使用的是默认的your-app.herokuapp.com域,或者如果您使用的是Basic或Professional层dynos,HTTPS应该已经可用。
如果您使用的是Eco dynos的自定义域,最简单的解决方案¹是升级到Basic dynos以访问automated certificate management(ACM),它在底层使用Let's Encrypt
如果您的应用当前运行在eco dynos上,Heroku会在您升级应用以使用Basic或Professional dynos时自动启用ACM:

heroku ps:resize web=basic

HTTPS * 可用 * 后,您可能需要配置从HTTP到HTTPS的重定向。Heroku不会为您执行此操作。请参考Flask安全指南,Heroku recommends使用flask-talisman执行此操作。flask-talisman可配置多个与安全相关的最佳实践,包括从HTTP到HTTPS的重定向。
¹如果您不想这样做,另一种选择是通过Heroku SSL提供自己的证书。这需要更多的工作,而且由于您必须提供自己的证书,因此可能会带来巨大的财务成本。

相关问题