Python中Flask + Gunicorn搭建Web服务,浏览器显示can't connect to the server如何解决?

机器是某运营商机房服务器,有公网 IP。 系统 Ubuntu 14.04.5 LTS (GNU/Linux 3.13.0-24-generic x86_64)

配置操作:

  • flask run 配置中 host=0.0.0.0port=5000
  • Gunicorn -b 0.0.0.0:5000
  • 没有用 Nginx,直接 flask 渲染一些静态页面,主要是用服务接口

尝试解决:

  • 尝试修改端口为 1024 以下。 [失败]
  • 在服务器本机上请求接口能正确获取数据,但是外部机器无法连接。

之前在内网测试时候是 OK 的,跨机可以通信,但是部署时候就出现上述问题了,Google 翻遍了,说的都是 host=0.0.0.0 的配置,实在是不知道咋办了,各位老哥能指点一下吗,感激不尽啊。


Python中Flask + Gunicorn搭建Web服务,浏览器显示can't connect to the server如何解决?

15 回复

安全组看一下,是不是端口没开


这个问题通常是因为服务没正确启动或网络配置有问题。先检查Gunicorn是否真的在运行:

# 先确认Flask应用能单独运行(app.py示例)
from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello():
    return 'Hello World!'

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000)  # 测试时用这个

运行 python app.py 看能否通过浏览器访问 http://localhost:5000。如果可以,再用Gunicorn启动:

# 常用启动命令
gunicorn -w 4 -b 0.0.0.0:8000 app:app

# 或者绑定到5000端口
gunicorn -b 127.0.0.1:5000 app:app

关键检查点:

  1. 端口是否正确:Gunicorn默认端口8000,Flask默认5000,别搞混
  2. 绑定地址:本地测试用 127.0.0.1,远程访问需要 0.0.0.0
  3. 防火墙:Linux检查 sudo ufw status,Windows关防火墙测试
  4. 进程确认ps aux | grep gunicornnetstat -tulpn | grep :8000

如果还是不行,在Gunicorn命令加 --log-level debug 看详细错误。大概率是端口被占或绑定地址不对。

总结:先确认服务进程和端口监听状态。

查本机防火墙,查云平台防火墙 /VPC

国内 IDC,则你此 IP 是否备案

你自己电脑上用 nmap -v -A 服务器 IP 扫下,看看端口是否打开

netstat 显示端口是开的

Gunicorn 配置对么,类似这样哎 gunicorn -b 0.0.0.0:5000 ‘app.create_app()’

本地能调非 localhost 能连接。然后云平台不行大概是没开放公用端口吧,而且也不是 docker 只是虚拟机实例,IP 也没什么好映射的。打开公用 IP,开放公用端口,再尝试。

runserver 和 gunicorn 都在 5000 ?
诶不过就算都在 5000,至少也该能访问到一个

头像好评>_<

直觉是你云平台的防火墙端口没开放。
到云平台的后台找找看吧。

本机防火墙已经关闭了,端口都没问题,云平台让小伙伴去查了,在等他们的消息,谢谢

配置正确的,内网测试全部通过了

嗯,现在感觉就是 IP 的问题了

之前尝试过 gunicorn 在 8080,flask 在 5000,但是还是失败了。。。

哈哈,差不多就是我现在的心情了

给小伙伴说了,无奈没给后台账号给我们,只能让他们去排查了

回到顶部