【问题标题】:Setting up HTTPS for AWS Lightsail backend instance为 AWS Lightsail 后端实例设置 HTTPS
【发布时间】:2020-04-27 20:47:15
【问题描述】:

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

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

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

spread.js:25 混合内容:“https://www.bible-it.com/”处的页面是通过 HTTPS 加载的,但请求了不安全的 XMLHttpRequest 端点……此请求已被阻止;内容必须通过 HTTPS 提供。

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

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

另外,如果我的设置

前端:s3 存储桶

后端:Lightsail > Ubuntu > Docker > Python Flask

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

【问题讨论】:

    标签: amazon-web-services docker ssl https amazon-lightsail


    【解决方案1】:

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

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


    最后一个提示:

    如果我理解正确,您正在开发服务器上运行您的应用程序。如果您使用

    运行 Flask 应用程序,就是这种情况
    from Flask import Flask
    app = Flask(__name__)
    app.run()
    

    一般来说,您不应该在生产环境中使用开发服务器。

    它的设计目的不是特别高效、稳定或安全。它 不支持 HTTP 服务器的所有可能功能。

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

    【讨论】:

    • 谢谢你,我会尝试你的建议,防火墙的更新看起来很有希望。我会尽快更新。
    • 快速提问。在 /var/www/item_catalog/item_catalog.wsgi 中的命令:import sys import logging logging.basicConfig(stream=sys.stderr) sys.path.insert(0,"/var/www/item_catalog/item_catalog") from app import app as application 是最后一行说 ** from the directory app import the flask object app as application***?
    • 是的,完全正确!您现在是否正在使用 WSGI 部署您的应用程序?
    • 谢谢你让一切正常工作。这是一个了不起的资源,我会保留它,我真的学到了很多东西。
    • 很高兴听到我的笔记对你有帮助:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-08
    • 2019-05-04
    • 2019-09-08
    • 2018-10-29
    相关资源
    最近更新 更多