You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

EC2环境下Flask应用通过AWS ALB配置HTTPS(SSL)的方案咨询

正确配置方案指导

核心逻辑:ACM证书无需部署到EC2实例上,直接将HTTPS加解密逻辑放在ALB层完成即可,完美解决ACM证书不可导出的问题。以下提供两种可落地的配置方案,可根据自身业务需求选择:

方案一:保留原有HTTP栈(改动最小,最推荐)

完全不需要修改EC2内部已有的nginx -> gunicorn -> Flask HTTP服务逻辑,仅调整ALB和目标组配置即可:

  • ALB侧配置:
    • 新增443端口的HTTPS监听器,直接绑定你在ACM申请的证书
    • 新增80端口的HTTP监听器,配置默认动作为重定向到443端口,实现所有HTTP请求自动跳转HTTPS
  • 目标组配置:
    • 目标组协议修改为HTTP,端口设置为你原有nginx暴露的HTTP端口(比如默认80,或你自定义的其他端口),健康检查也使用HTTP协议对应路径
  • 最终链路:用户HTTPS请求 -> ALB(443端口,HTTPS卸载,绑定ACM证书)-> 目标组(HTTP)-> EC2(nginx HTTP端口)-> gunicorn -> Flask
  • 优势:完全复用原有EC2内部的服务配置,nginx可继续承担静态资源代理、限流、访问日志收集、访问控制等你原有配置的功能。

方案二:简化栈结构,去掉nginx

如果你的业务场景没有用到nginx的额外功能,可直接用gunicorn对接目标组:

  • 目标组协议保持HTTP,端口指向gunicorn监听的端口(比如默认8000)
  • 最终链路:ALB(HTTPS卸载)-> 目标组(HTTP)-> EC2(gunicorn HTTP端口)-> Flask
  • 注意:绝对不要直接使用Flask自带的开发服务器(flask run启动的服务)对接目标组或暴露到公网,开发服务器没有生产级的并发处理能力和稳定性,仅适合本地调试使用,生产环境必须保留gunicorn这类WSGI服务器。

补充说明

  • 无特殊合规要求的场景下,ALB到EC2之间走私有网络的HTTP通信即可满足安全需求,不需要在EC2上配置任何HTTPS相关逻辑,也无需给EC2的安全组开放443端口到公网,仅需要允许ALB的安全组访问EC2对应的HTTP端口即可。
  • 如果要求ALB到EC2之间的链路也必须HTTPS加密,可以自行给EC2内部服务生成自签名证书使用,ALB配置后端协议为HTTPS时可选择忽略证书校验,不需要用到ACM的公开证书。

内容的提问来源于stack exchange,提问作者MS-87

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 13:57:00