云栖问答

找不到答案?去提问题

nginx 服务器 ECS SSH IP flask 2017-08-17 00:47:05

在ecs上启动flask应用后,无法通过公网ip访问网站

ecs用的是专有网络,确认已开启80和5000端口,地址段是0.0.0.0/0。
ssh进到ecs之后启动flask应用用的默认地址127.0.0.1:5000,也尝试过把端口改成80,通过 服务器公网ip:端口 尝试访问网站均显示无法连接到服务器。请问怎么解决…
(最简单的flask示例,未使用uwsgi或者nginx)
启动flask应用后通过netstat确认80端口在listen状态,仍然无法访问

5个回答

3

风吹佩兰

flask默认只能本机访问,要让网络上其他机器访问,需要增加host为0.0.0.0

flask官网原文(http://flask.pocoo.org/docs/0.12/quickstart/#a-minimal-application)
Externally Visible Server

If you run the server you will notice that the server is only accessible from your own computer, not from any other in the network. This is the default because in debugging mode a user of the application can execute arbitrary Python code on your computer.

If you have the debugger disabled or trust the users on your network, you can make the server publicly available simply by adding --host=0.0.0.0 to the command line:

flask run --host=0.0.0.0

This tells your operating system to listen on all public IPs.

也可以这样:
app.run(host="0.0.0.0", port=80)

0

^-落-^

我的解决方案:安全组规则里面需要添加端口 5000, 然后就可以了。。。

0

bbskkb

您好,请问服务器上有测试过是否能正常访问,以及安全组是否放行响应的端口?

0

风吹佩兰

我也是遇到同样的问题。。还不知道怎么解决

0

风吹佩兰

目前来看,端口设置正确的话, 可能是flask配置的问题
启动python自带的HTTP服务器 sudo python -m SimpleHTTPServer 5000 ,这样启的网站可以公网访问
而使用flask官方网站上的示例启的服务器,公网不能访问
我的环境是CentOS 7.2 python 2.7 flask是最新版本

1
GO