如何让Flask应用在EC2公网IP而非私有IP上运行?
Flask 部署AWS EC2公网访问问题解决
为什么指定公网IP会报错?
EC2实例的公网IP是AWS通过NAT技术映射到实例私有IP的,实例本身并没有直接绑定这个公网IP,所以把公网IP作为host参数时,系统会提示“Cannot assign requested address”,这是正常现象。
正确的公网访问配置步骤
- 启动Flask应用时保持监听所有接口:继续使用命令
flask run --host=0.0.0.0,这个命令会让应用监听实例的所有网络接口(包括私有IP),AWS的NAT映射会自动把公网IP的请求转发到实例的私有IP上。 - 配置EC2安全组:
- 进入EC2控制台,找到你的实例对应的安全组,添加入站规则。
- 规则类型选择HTTP(或HTTPS,如果用了加密),端口范围填Flask的默认端口
5000(如果改了端口就填对应数值),源地址设为0.0.0.0/0(允许所有互联网IP访问)。
- 验证访问:用EC2的公网IP加上端口号(比如
http://xxx.xxx.xxx.xxx:5000)在浏览器或curl工具中测试,就能从互联网任意位置访问你的Flask应用了。
生产环境注意事项
- 不要用
flask run作为生产环境的启动方式,这个命令是开发用的,性能和稳定性不足。推荐用Gunicorn或uWSGI作为WSGI服务器,搭配Nginx做反向代理。 - 检查实例的网络ACL,如果之前修改过,要确保对应的端口(比如5000)允许入站流量。
内容的提问来源于stack exchange,提问作者you ram bam
相关产品推荐
相关产品推荐

