You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flask部署至AWS EC2 Ubuntu遇Nginx-Gunicorn 502网关错误求助

解决Flask+Gunicorn+Nginx部署的502 Bad Gateway问题

嘿,我之前把Flask部署到EC2的时候也踩过这个502的坑,结合你描述的情况,咱们从最常见的原因开始排查:

1. 套接字权限配置错误(大概率是核心问题)

你启动Gunicorn时用了-m 007参数,这个八进制权限设置会让project.sock的权限变成所有者无任何权限、组无任何权限、其他用户拥有读写执行权限。但Nginx是用www-data用户/组运行的,它属于组用户,根本没有访问这个套接字的权限,自然会返回502。

修复方案:

  • 方法一:启动Gunicorn时设置更合理的权限,比如-m 0775(所有者和组有读写执行,其他用户有读执行):
    gunicorn --workers 3 --bind unix:project.sock -m 0775 wsgi:app
    
  • 方法二:让Gunicorn直接以www-data用户身份运行,确保套接字所有者匹配:
    gunicorn --workers 3 --bind unix:project.sock --user www-data --group www-data -m 0775 wsgi:app
    

2. Nginx配置里的套接字路径不匹配

检查你的/etc/nginx/sites-available/配置文件,确认proxy_pass里的套接字路径是绝对路径,而不是相对路径。比如你在/home/ubuntu/my-flask-project目录下启动的Gunicorn,那配置里应该写:

location / {
    include proxy_params;
    proxy_pass http://unix:/home/ubuntu/my-flask-project/project.sock;
}

如果只写project.sock,Nginx会默认去根目录/找这个文件,肯定找不到。

3. 确认Gunicorn进程和套接字文件存在

  • 先检查Gunicorn是否在运行:
    ps aux | grep gunicorn
    
    如果看不到Gunicorn的进程,说明启动失败了,建议把Gunicorn的输出重定向到日志文件排查错误:
    gunicorn --workers 3 --bind unix:project.sock -m 0775 wsgi:app > gunicorn.log 2>&1 &
    
    然后查看gunicorn.log里的具体报错信息。
  • 再检查套接字文件是否存在:
    ls -l /path/to/your/project.sock
    
    如果文件不存在,说明Gunicorn启动时没有成功创建套接字,同样需要看日志找原因。

4. 重启服务生效

每次修改权限或配置后,一定要重启Nginx和Gunicorn:

# 重启Nginx
sudo systemctl restart nginx
# 杀掉旧的Gunicorn进程(替换成你的进程PID)
sudo kill <gunicorn_pid>
# 重新启动Gunicorn
gunicorn --workers 3 --bind unix:project.sock -m 0775 wsgi:app

先从这几点入手排查,最常见的就是权限和路径问题,应该能解决你的502错误。

内容的提问来源于stack exchange,提问作者Yu Chen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 09:55:58