【问题标题】:Flask with gunicorn on nginx 502 bad gateway error在 nginx 502 错误网关错误上使用 gunicorn 烧瓶
【发布时间】:2017-11-12 21:27:52
【问题描述】:

在一些 ubuntu 16.04 升级和应用程序代码修改后,我以前在 gunicorn 和 nginx 网站上运行的 Flask 现在出现 502 bad gateway 错误。

myapp.conf:

upstream app_server_wsgiapp {
  server localhost:8000 fail_timeout=0;
}

server {
  listen 80;
  server_name www.myserver.com;

  access_log   /var/log/nginx/www.myapp.access.log;
  error_log   /var/log/nginx/www.myapp.error.log info;
  keepalive_timeout    5;

  location /static {
    autoindex on;
    alias /myapp/static;
  }

  location / {
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_redirect off;
    if (!-f $request_filename) {
      proxy_pass http://app_server_wsgiapp;
      break; 
    }
    client_max_body_size 2097152;
    #to get around upstream sent too big header while reading response header from upstream error
    proxy_buffer_size          128k;
    proxy_buffers              4 256k;
    proxy_busy_buffers_size    256k;
  }

  # this section allows Nginx to reverse proxy for websockets
  location /socket.io {
    proxy_pass http://app_server_wsgiapp/socket.io;
    proxy_redirect off;
    proxy_buffering off;
    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_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "Upgrade";
  } 
}

/var/log/nginx/myapp.error.log

2017/06/11 06:42:52 [error] 31054#31054: *1 connect() failed (111: Connection refused) while connecting to upstream, client: clientip, server: www.myserver.com, request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:8000/", host: "www.myapp.com"

从我的应用程序日志文件中,我注意到 Flask 在启动过程中完成了一部分,然后在一个连续的失败/重启循环中重新启动。

有什么想法可以调试导致此问题的原因吗?

【问题讨论】:

  • 你是如何启动flask服务的?您是否尝试过以交互模式运行烧瓶服务并检查控制台输出?
  • @hzm 我正在通过 ansible 部署脚本部署和启动烧瓶,该脚本设置 gunicorn 然后使用主管重新启动 nginx。在服务器上手动启动此烧瓶设置并非易事,将继续破解它
  • @hzm 你是一个传奇人物,你能把你的评论放在答案中吗 - 通过在服务器上手动启动应用程序我发现了一个依赖问题并且应用程序每次都崩溃了,然后主管只是重新启动它。现在全部修复
  • 已添加答案 :)

标签: python ubuntu nginx flask gunicorn


【解决方案1】:

看起来问题是由烧瓶应用程序运行错误引起的。您能否尝试以交互方式运行该应用程序?以daemon方式设置相同的参数和环境,检查服务是否可以正常启动?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-12-07
    • 1970-01-01
    • 2012-05-28
    • 2018-12-05
    • 2017-07-07
    • 2021-11-19
    • 2017-05-11
    • 2013-05-14
    相关资源
    最近更新 更多