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

Gunicorn、Nginx与Flask部署协作异常,寻求技术协助

Nginx+Gunicorn+Flask部署故障排查方案

核心问题定位

从日志和配置看,存在三个致命错误导致协作失败:Gunicorn套接字绑定语法错误、Nginx协议不匹配、server_name格式错误。


分步修复

1. 修复Gunicorn套接字绑定语法

Gunicorn绑定Unix套接字必须添加unix:前缀,直接写文件名会被解析为网络主机名,导致Name or service not known错误。

  • 命令行启动的正确方式:
gunicorn wsgi:application -b unix:project1.sock
  • systemd服务配置已正确写了--bind unix:project1.sock,只需重启服务生效:
sudo systemctl daemon-reload
sudo systemctl restart gunicorn

2. 修正Nginx协议与配置

Gunicorn是WSGI服务器,默认使用HTTP协议,Nginx配置中误用了uWSGI协议相关指令,导致无法通信。同时server_name的逗号分隔是错误格式,需改为空格分隔。

修改/etc/nginx/sites-enabled/project1.conf为:

include /etc/nginx/conf.d/*.conf;
upstream app_a {
        server unix:///home/bit-web/pyvenv/project1/project1.sock;
}
server {
listen 80;
server_name guadalupe.int.colorado.edu 172.20.13.55;
location / {
        proxy_read_timeout 300;
        proxy_connect_timeout 300;
        proxy_pass http://app_a;
        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
sudo systemctl restart nginx

3. 确保套接字权限正确

旧的套接字文件可能权限异常,先删除再让Gunicorn重新创建:

sudo rm /home/bit-web/pyvenv/project1/project1.sock
sudo systemctl restart gunicorn

检查权限,确保nginx组有读写权限:

ls -l /home/bit-web/pyvenv/project1/project1.sock

(预期输出权限为rwxrwx---,归属用户bit-web、组nginx)

4. 验证服务状态

  • 检查Gunicorn运行状态:
sudo systemctl status gunicorn
  • 检查Nginx运行状态:
sudo systemctl status nginx

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 14:35:14