Lightsail Ubuntu上Gunicorn服务器无法访问:ECONNREFUSED错误
排查与解决步骤
1. 修正Gunicorn的监听地址
Gunicorn默认仅绑定127.0.0.1:8000,仅允许服务器本地访问,外部请求会直接被拒绝。启动时必须明确指定绑定到所有可用网卡:
gunicorn -w 4 -k uvicorn.workers.UvicornWorker main:app --bind 0.0.0.0:8000
-w 4:根据实例配置调整工作进程数,示例为4个-k uvicorn.workers.UvicornWorker:FastAPI需依赖Uvicorn工作器运行main:app:替换为你的FastAPI入口文件名和app实例名称--bind 0.0.0.0:8000:核心配置,让Gunicorn监听服务器所有网卡的8000端口
2. 确认Gunicorn监听状态
启动后在服务器终端执行以下命令,验证端口监听情况:
sudo netstat -tulpn | grep 8000
若输出包含0.0.0.0:8000且对应进程为gunicorn,说明监听正常;若显示127.0.0.1:8000,则是绑定地址未设置正确。
3. 服务器本地测试API可用性
在Lightsail实例终端内用curl测试本地访问:
curl http://127.0.0.1:8000
若能返回API响应,说明Gunicorn与FastAPI本身无问题,问题出在外部网络层面;若本地访问失败,检查依赖是否安装完整、入口文件路径或app实例名是否正确。
4. 检查Lightsail实例级防火墙
即使关闭了Ubuntu系统防火墙,Lightsail还有实例专属的网络防火墙规则,需确认8000端口入站规则已开放:
- 登录AWS Lightsail控制台,进入目标实例详情页
- 切换至「网络」标签,在「防火墙」区域添加规则:
- 协议:TCP
- 端口范围:8000
- 来源:0.0.0.0/0(测试阶段允许所有外部访问,后续可按需限制IP范围)
5. 再次确认端口占用情况
执行以下命令排查8000端口是否被其他进程占用:
sudo lsof -i :8000
若输出为空,端口确实空闲;若有其他进程占用,终止进程后重新启动Gunicorn。
6. 查看Gunicorn启动日志
不要后台启动Gunicorn,直接在前台运行以查看实时报错:
gunicorn -w 4 -k uvicorn.workers.UvicornWorker main:app --bind 0.0.0.0:8000
若存在模块缺失、入口文件错误等问题,此处会直接显示错误信息,针对性修复即可。
内容的提问来源于stack exchange,提问作者M Bilal Ayaz
相关产品推荐
相关产品推荐

