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

Flask应用部署EC2 Ubuntu后AWS Cognito认证重定向失败求助

Flask + AWS Cognito 部署EC2后认证跳转ERR_CONNECTION_REFUSED 排查指南

核心排查方向

1. 验证AWS Cognito回调URL配置

  • 登录AWS控制台,进入Cognito用户池的应用客户端设置页面
  • 确认**Callback URL(s)和Sign out URL(s)**已添加EC2实例的公网IP/域名(例如http://your-ec2-public-ip/dashboard),本地localhost地址可保留但线上必须包含EC2公网地址
  • 注意:Cognito严格校验回调地址,未配置的地址会被拦截,导致跳转失败

2. 检查Gunicorn运行状态与绑定地址

  • 查看Gunicorn配置文件,确认绑定地址为0.0.0.0:端口(如0.0.0.0:8000),而非127.0.0.1:端口——绑定本地回环地址会导致Nginx无法转发请求
  • 执行ps aux | grep gunicorn,确认Gunicorn进程正常运行
  • 在EC2本地执行curl http://127.0.0.1:8000/dashboard,测试Gunicorn是否能正常响应仪表板请求,排除应用本身故障

3. 校验Nginx反向代理配置

  • 检查Nginx站点配置文件(通常在/etc/nginx/sites-available/下),确保反向代理规则正确指向Gunicorn:
server {
    listen 80;
    server_name your-ec2-public-ip;

    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;
    }
}
  • 执行sudo nginx -t验证配置语法,无报错后重启Nginx:sudo systemctl restart nginx
  • 确认Nginx监听的端口(默认80)已在EC2安全组中开放,且Cognito回调URL使用该端口

4. 检查Flask应用配置

  • 确保应用未硬编码回调/重定向地址为localhost,改用环境变量或配置文件读取线上地址,例如:
import os
BASE_URL = os.getenv('BASE_URL', 'http://localhost:5000')
# 在Cognito认证配置中使用BASE_URL拼接回调地址
  • 确认Gunicorn启动命令使用正确的应用入口(如gunicorn --config gunicorn.conf.py wsgi:app),无启动异常

5. 日志分析定位问题

  • 查看Gunicorn服务日志:sudo journalctl -u project_name -f,排查应用启动报错、请求处理异常
  • 查看Nginx日志:
    • 访问日志:/var/log/nginx/access.log,确认Cognito的回调请求是否到达Nginx
    • 错误日志:/var/log/nginx/error.log,查找反向代理失败的具体错误(如连接拒绝到Gunicorn地址)

6. 检查Ubuntu本地防火墙

  • 执行sudo ufw status,确认允许Nginx端口(80)的入站请求;若未开启ufw可忽略此步骤

内容的提问来源于stack exchange,提问作者Shubham Borghare

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 16:01:30