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

Amazon Linux 2 EC2上Flask服务无法外网访问的排查求助

Flask服务无法外网访问的解决(Amazon Linux 2 EC2)

核心问题定位

Flask默认启动时绑定127.0.0.1,仅允许本地回环访问,无法响应外部网卡的请求——这是导致外网无法访问的直接原因。结合你提到Apache可正常访问的情况,需按以下步骤排查修复:

1. 修改Flask监听地址

将服务绑定到实例的所有网卡(0.0.0.0),而非仅本地回环:

  • 临时启动时指定参数:
    flask run --host=0.0.0.0 --port=5000
    
  • 或通过环境变量设置(当前会话有效):
    export FLASK_RUN_HOST=0.0.0.0
    flask run --port=5000
    

2. 确认EC2安全组入站规则

确保Flask使用的端口(如5000)已在安全组中开放:

  • 登录AWS控制台,进入目标EC2实例的安全组配置页面
  • 添加自定义TCP规则:端口范围填5000,源地址设为0.0.0.0/0(允许所有外网访问,或指定你的公网IP提升安全性)
  • 保存规则后等待1-2分钟生效

3. 检查实例本地防火墙

Amazon Linux 2默认启用firewalld,需确认端口未被拦截:

  • 开放端口并永久生效:
    sudo firewall-cmd --add-port=5000/tcp --permanent
    sudo firewall-cmd --reload
    
  • 若使用iptables,执行:
    sudo iptables -A INPUT -p tcp --dport 5000 -j ACCEPT
    sudo service iptables save
    

4. 验证监听状态

确认Flask已正确绑定到所有网卡:

netstat -tulpn | grep 5000

输出应包含0.0.0.0:5000,而非仅127.0.0.1:5000。

内容的提问来源于stack exchange,提问作者Kevin Butler

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 13:34:59