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

使用Nginx部署Flask应用遇超时问题求助

Flask + Gunicorn + Nginx 部署超时(502错误)问题解决

问题背景

在DigitalOcean Droplet上部署Flask应用,遵循官方教程操作后出现异常:

  • 直接运行app.py或手动执行gunicorn --bind 0.0.0.0:5000 app:app时,可通过IP正常访问应用
  • 通过Nginx访问(域名/IP,且未手动启动应用)时出现超时,Nginx日志显示502错误

当前环境信息

目录结构

root/ 
└── baseweb/
     ├── venv
     ├── app.py 
     └── app/ 
         ├── routes.py 
         └── templates/ 
             └── index.html

app.py代码

from app import app

if __name__ == "__main__":
    app.run(host='0.0.0.0', debug=True)

Systemd服务配置(/etc/systemd/system/baseweb.service)

Description=Gunicorn instance to serve myproject
Requires=project.sock
After=network.target

[Service]
User=root
Group=www-data
WorkingDirectory=/root/baseweb
Environment="PATH=/root/baseweb/venv/bin"
ExecStart=/root/baseweb/venv/bin/gunicorn --preload --timeout 120 --bind unix:/baseweb/baseweb.sock -m 007 --work

Restart=always
RestartSec=3

[Install]
WantedBy=multi-user.target

Nginx配置(/etc/nginx/sites-available/baseweb)

server {
  list 80;
  server_name baserank.net, www.baserank.net;

  location / {
    proxy_pass http://127.0.0.1:5000;
  }
}

Nginx access.log日志

185.16.141.5 - - [17/Feb/2023:14:14:17 +0000] "GET / HTTP/1.1" 502 568 "http://baserank.net/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36"
185.16.141.5 - - [17/Feb/2023:14:14:17 +0000] "GET / HTTP/1.1" 502 568 "http://baserank.net/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36"
185.16.141.5 - - [17/Feb/2023:14:14:20 +0000] "GET / HTTP/1.1" 502 568 "http://baserank.net/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36"
185.16.141.5 - - [17/Feb/2023:14:14:20 +0000] "GET / HTTP/1.1" 502 568 "http://baserank.net/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36"
143.110.222.166 - - [17/Feb/2023:14:22:21 +0000] "GET / HTTP/1.1" 502 166 "-" "Mozilla/5.0 (iPhone; CPU iPhone OS 16_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.1 Mobile/15E148 Safari/604.1"

问题分析与修复步骤

1. 修复Systemd服务配置错误

当前服务配置存在两处致命问题:

  • ExecStart命令未完成:--work应为--workers参数(如--workers 3),且缺少应用入口app:app
  • Sock路径不一致:Requires=project.sock与绑定的/baseweb/baseweb.sock不匹配,且该路径可能存在权限问题

修改后的服务配置:

Description=Gunicorn instance to serve baseweb
Requires=/root/baseweb/baseweb.sock
After=network.target

[Service]
User=root
Group=www-data
WorkingDirectory=/root/baseweb
Environment="PATH=/root/baseweb/venv/bin"
# 修正sock路径到工作目录,补全workers参数和应用入口
ExecStart=/root/baseweb/venv/bin/gunicorn --preload --timeout 120 --bind unix:/root/baseweb/baseweb.sock -m 007 --workers 3 app:app
# 设置umask确保sock文件组有读写权限
UMask=0002

Restart=always
RestartSec=3

[Install]
WantedBy=multi-user.target

执行以下命令生效:

sudo systemctl daemon-reload
sudo systemctl restart baseweb
# 检查服务状态,确保显示active (running)
sudo systemctl status baseweb
# 查看服务日志排查启动错误
journalctl -u baseweb -f

2. 修复Nginx配置错误

当前Nginx配置存在两处错误:

  • list 80拼写错误,应为listen 80
  • server_name中的逗号需删除,多个域名用空格分隔
  • 代理目标与gunicorn绑定的socket不一致(当前代理到5000端口,但服务绑定的是unix socket)

修改后的Nginx配置:

server {
  listen 80;
  server_name baserank.net www.baserank.net;

  location / {
    # 代理到gunicorn绑定的unix socket
    proxy_pass http://unix:/root/baseweb/baseweb.sock;
    # 添加必要的代理头,保证Flask能获取正确的请求信息
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
  }
}

执行以下命令生效:

# 检查Nginx配置语法
sudo nginx -t
# 重启Nginx
sudo systemctl restart nginx

3. 验证权限与连接

  • 检查sock文件权限:
ls -l /root/baseweb/baseweb.sock
# 正常应为 root:www-data,权限 rw-rw----
  • 测试socket连接:
curl --unix-socket /root/baseweb/baseweb.sock http://localhost
# 应返回应用的正常响应内容

4. 其他排查点

  • 确认DigitalOcean Droplet的防火墙规则已允许80端口的HTTP流量
  • 检查系统防火墙(ufw)是否开放80端口:sudo ufw status,若未开放则执行sudo ufw allow 80

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 19:29:44