我在端口5000上的AWS Ubuntu服务器上运行了一个烧瓶应用程序(烧瓶在端口5000上运行默认值)。但是当我尝试访问该端口上的服务器时,它永远不会连接。
我在端口ng-if
上为Custom TCP
在AWS控制台上添加了一个安全组,用于任何IP地址5000
,但我仍然无法访问它。
我是否必须重启服务器?或者我错过了什么?
让我知道要提供的任何其他信息。
答案 0 :(得分:22)
除了允许通过安全组访问端口5000之外,您还需要确保您的应用正在侦听可以接受来自外部的TCP连接的IP。要收听所有IP,请在您的应用中使用:
if __name__ == '__main__':
app.run(host='0.0.0.0', debug = False)
而不是:
if __name__ == '__main__':
app.run(host='127.0.0.1', debug = False)
要查看应用程序正在侦听的地址,可以运行以下命令:
netstat -an | grep :5000
进行这些更改后,您需要重新启动Flask应用程序。
我假设您只是将它用于开发和测试,因为您将其保留在端口5000
上,但是,当您准备将应用程序部署到生产环境中时,您需要将其放入它背后是一个真实的网络服务器我建议将nginx与uWSGI一起使用。 Here is a guide配置Flask + nginx + uWSGI,这是主题上的official documentation from Flask。
答案 1 :(得分:9)
除了@ Will的答案之外,您可能会使用默认情况下使用限制性iptables规则的任何Ubuntu AMI。 使用:
sudo iptables -L
列出任何现有规则。 使用:
sudo iptables -A INPUT -p tcp --dport 5000 -j ACCEPT
如有必要,打开端口。