我有一个flask应用程序运行在AWS Ubuntu服务器上的端口5000 (flask运行默认端口5000)。但是当我试图访问该端口上的服务器时,它永远不会连接。
我在AWS控制台上为任何ip地址0.0.0.0/0
的5000
端口添加了一个安全组Custom TCP
,但仍然无法访问它。
我必须重新启动服务器吗?还是我错过了什么?
除了允许通过安全组访问端口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
上,但是,当您准备将应用程序部署到生产中时,您需要将其放在真正的web服务器后面。我建议使用nginx和uWSGI。下面是配置Flask + nginx + uWSGI的指南,这里是Flask关于这个主题的官方文档。
除了@Will的回答之外,你使用的任何Ubuntu AMI都可能默认带有限制性iptables规则。用途:
sudo iptables -L
列出所有存在的当前规则。用途:
sudo iptables -A INPUT -p tcp --dport 5000 -j ACCEPT
在必要时打开端口。