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

基于Flask+EC2+AWS的个人作品集网站SSL证书安装问题

Flask网站HTTPS配置指引(针对AWS EC2+Route53环境)

问题1:是否需要迁移至443端口?

是的,必须迁移到443端口来启用HTTPS。同时建议配置80端口的HTTP请求自动跳转至443的HTTPS,确保所有访问都通过安全连接。你的EC2已开放80和443端口,满足配置条件。

问题2:证书安装方法及ACM的作用

目前有两种主流方案,对应不同部署架构:

方案一:应用负载均衡(ALB)+ AWS Certificate Manager(ACM)

ACM无法直接将证书安装到EC2实例,但可与AWS负载均衡集成,实现证书自动管理(包括续期),步骤如下:

  1. 申请ACM证书:
    • 登录AWS控制台进入ACM服务,选择与EC2同区域,申请免费SSL证书。
    • 填写域名www.prabhusubramanian.com(建议同时添加根域名prabhusubramanian.com覆盖全量访问场景)。
    • 验证方式选DNS验证,ACM会自动在你的Route53托管区添加验证记录,等待数分钟即可完成验证。
  2. 配置ALB:
    • 创建应用负载均衡,设置两个监听规则:
      • 80端口(HTTP):配置跳转至HTTPS,或直接转发到EC2的80端口。
      • 443端口(HTTPS):关联已申请的ACM证书,转发目标设为EC2的80端口。
    • 负载均衡安全组开放80、443端口;EC2安全组仅允许负载均衡的安全组访问80端口(提升安全性)。
  3. 更新Route53记录:
    • 将域名的A/别名记录指向负载均衡的DNS名称,替代原EC2公网IP。

方案二:EC2直接安装证书(Nginx反向代理+Let's Encrypt)

适合单EC2实例的轻量部署,证书直接安装在EC2上,步骤如下:

  1. 部署Nginx与gunicorn:
    • 以Ubuntu为例,安装Nginx:
      sudo apt update && sudo apt install nginx
      
    • 安装生产级服务gunicorn(不建议直接用Flask内置服务器):
      pip install gunicorn
      
    • 启动gunicorn(假设Flask实例在app.py中,实例名为app):
      gunicorn --bind 127.0.0.1:8000 app:app
      
    • 可配置systemd服务实现gunicorn开机自启,避免终端关闭后服务中断。
  2. 申请并配置Let's Encrypt证书:
    • 安装Certbot工具:
      sudo apt install certbot python3-certbot-nginx
      
    • 自动申请证书并配置Nginx:
      sudo certbot --nginx -d www.prabhusubramanian.com
      
    • 按照终端提示选择“强制HTTP跳转至HTTPS”,Certbot会自动修改Nginx配置。
  3. 验证Nginx配置:
    • 查看生成的配置文件(位于/etc/nginx/sites-available/),确保包含反向代理规则,示例片段:
      server {
          listen 443 ssl;
          server_name www.prabhusubramanian.com;
      
          ssl_certificate /etc/letsencrypt/live/www.prabhusubramanian.com/fullchain.pem;
          ssl_certificate_key /etc/letsencrypt/live/www.prabhusubramanian.com/privkey.pem;
      
          location / {
              proxy_pass http://127.0.0.1:8000;
              proxy_set_header Host $host;
              proxy_set_header X-Real-IP $remote_addr;
              proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
              proxy_set_header X-Forwarded-Proto $scheme;
          }
      }
      
    • 重启Nginx生效:
      sudo systemctl restart nginx
      

方案对比

  • ALB+ACM方案:无需手动维护证书(自动续期),支持多EC2实例扩展,适合未来有扩容需求的场景。
  • Nginx+Let's Encrypt方案:部署流程简单,无额外AWS资源成本,适合单实例的个人作品集网站。

内容的提问来源于stack exchange,提问作者Prabhu Subramanian

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 16:13:11