为 AWS Lightsail 后端实例设置 HTTPS

Setting up HTTPS for AWS Lightsail backend instance

我在 S3 存储桶中托管了一个网页,它设置为 HTTPS。

我的后端 运行 在具有静态 IP 地址的 AWS Lightsail 实例上,我的前端请求获取 JSON 数据。该服务器是 Python Flask 服务器,它 运行 在 Docker 容器中。

当我 运行 docker run -p 443:MY_PORT ...(端口 443 是 Lightsail 的 HTTPS 端口)时,我无法让我的前端与服务器通信。相反,我收到此错误:

spread.js:25 Mixed Content: The page at 'https://www.bible-it.com/' was loaded over HTTPS, but requested an insecure XMLHttpRequest endpoint ... This request has been blocked; the content must be served over HTTPS.

没有问题,如果我 运行 我的 docker 命令通过端口 80。

为我的 Lightsail 实例设置 HTTPS 的最佳方法是什么?

此外,如果我的设置

前端:s3 存储桶

后端:Lightsail > Ubuntu > Docker > Python Flask

设置不当请告诉我。我是自学成才的,希望得到一些指导。太感谢了。

如错误消息所述,您的服务器无法通过 HTTPS 正确提供内容。这可能有几个原因:

  • 您的请求被重定向到 HTTP。确保您的服务器不会这样做。
  • 您的 Lightsail 实例不允许 HTTPS 连接。在这种情况下,您必须 update your instance's firewall.
  • 您的 TLS/SSL 证书设置不正确。在这种情况下,您可以使用例如Let's Encrypt 并按照他们的文档进行正确设置。


最后一个提示:

如果我没理解错的话,您是 运行在开发服务器上安装您的应用程序。如果您 运行 您的 Flask 应用程序

就是这种情况
from Flask import Flask
app = Flask(__name__)
app.run()

一般情况下,您不应在生产环境中使用开发服务器。

It is not designed to be particularly efficient, stable, or secure. It does not support all the possible features of a HTTP server.

您可以在 中阅读更多相关信息。