flask+gunicorn+nginx部署失败原因?

尝试用gunicorn+nginx组合在AWS部署一个flask应用,不知道为啥老是不成功。。求助
nginx配置

/etc/nginx/sites-available/default

server {
        listen   80  ;

        server_name noorders.com ;

        root /home/The-Garden-of-Forking-Paths/  ;
        access_log  /home/The-Garden-of-Forking-Paths/log/nginx.log ;
        error_log  /home/The-Garden-of-Forking-Paths/log/nginx.err  ;

        location / {
                proxy_pass http://127.0.0.1:5000  ;
                proxy_redirect 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  ;
            }
        location /static/ {
                alias /home/The-Garden-of-Forking-Paths/app/static/;
            }
        }

运行命令sudo service nginx start
图片描述

gunicorn的配置文件为

/home/The-Garden-of-Forking-Paths/project.conf

workers = 4
bind = '127.0.0.1:5000'
proc_name = 'manage'
pidfile = '/tmp/app.pid' 

运行命令 gunicorn --config project.conf manage:app
图片描述

域名服务商是Godaddy
DNS解析换成了DNSPod
AWS的弹性IP已经加入域名的A记录
折腾挺久了,还是没搞明白,求教是哪一步出了问题?万分感谢!

阅读 6.2k
5 个回答

试试下面的排除步骤:

  • 1.guicorn跑起来没? curl 127.0.0.1:5000 看看有页面输出吗

  • 2.nginx跑起来没有? nmap 外网IP 看看80是否开着

  • 3.dns起效没有? nslookup noorders.com 看看是否正确解析到你的服务器外网IP了

  • 4.nginx和域名是否对上了?curl noorders.com 看输出以及nginx的access.log

  • 5.flask用guicorn跑的时候是否有IP白名单之类的限制

  • 6.看nginx和guicorn的access.log、error.log。

另外可以先把guicorn关了,直接python -m SimpleHTTPServer 5000直接在5000跑一个HTTP服务,看看能正常访问不,能访问的话至少说明nginx和dns是对的,问题就有可能出现在guicorn和flask上了。

多用排除法吧。。

新手上路,请多包涵

在/etc/nginx/sites-available/default里server上面加入这段试试:

upstream noorders.com {
       server 127.0.0.1:5000;
    }
    

我也是前两天刚弄的新手,不确定这样行不行,试一下?

gunicorn 的 bind = '127.0.0.1:5000' 改成 bind = '0.0.0.0:5000' 试试。

感觉 proxy_redirect off 不大对

新手上路,请多包涵
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题