通过Flask / Gunicorn / Nginx提供API:连接被拒绝

时间:2019-06-11 23:29:13

标签: nginx flask gunicorn

我很难让Gunicorn和Nginx一起工作,并允许我通过烧瓶提供简单的API:

在本地运行gunicorn并从服务器获取响应可以正常工作:

babel-polyfill

当我尝试使用Nginx时也会出现问题。

/etc/systemd/system/app.service

"sideEffects": false

/ etc / nginx / sites-available / app

gunicorn wsgi:app (start server)
[2019-06-11 23:12:48 +0000] [14615] [INFO] Starting gunicorn 19.9.0
[2019-06-11 23:12:48 +0000] [14615] [INFO] Listening at: http://127.0.0.1:8000 (14615)
[2019-06-11 23:12:48 +0000] [14615] [INFO] Using worker: sync
[2019-06-11 23:12:48 +0000] [14619] [INFO] Booting worker with pid: 14619


curl http://127.0.0.1:8000/predict (client call server for prediction)
output: "SERVER WORKS"

我的systemd的状态看起来不错:

[Unit]
Description=Gunicorn instance to serve app
After=network.target

[Service]
User=root
Group=www-data
WorkingDirectory=/root/server
ExecStart=/usr/local/bin/gunicorn --bind unix:app.sock -m 007 wsgi:app

[Install]
WantedBy=multi-user.target

当我向服务器发出请求时,我无法连接:

server {
    listen 80;
    server_name [SERVER_IP_ADDRESS];

    location / {
        include proxy_params;
        proxy_pass http://unix:/root/server/app.sock;
    }

}

编辑:

我尝试从systemctl status app ● app.service - Gunicorn instance to serve app Loaded: loaded (/etc/systemd/system/app.service; enabled; vendor preset: enabled) Active: active (running) since Tue 2019-06-11 23:24:07 UTC; 1s ago Main PID: 14664 (gunicorn) Tasks: 2 (limit: 4915) CGroup: /system.slice/app.service ├─14664 /usr/bin/python /usr/local/bin/gunicorn --bind unix:app.sock -m 007 wsgi:app └─14681 /usr/bin/python /usr/local/bin/gunicorn --bind unix:app.sock -m 007 wsgi:app systemd[1]: Started Gunicorn instance to serve app. gunicorn[14664]: [2019-06-11 23:24:07 +0000] [14664] [INFO] Starting gunicorn 19.9.0 gunicorn[14664]: [2019-06-11 23:24:07 +0000] [14664] [INFO] Listening at: unix:app.sock (14664) gunicorn[14664]: [2019-06-11 23:24:07 +0000] [14664] [INFO] Using worker: sync gunicorn[14664]: [2019-06-11 23:24:07 +0000] [14681] [INFO] Booting worker with pid: 14681 中删除curl http://[SERVER_IP_ADDRESS]:80/predict <html> <head><title>502 Bad Gateway</title></head> <body bgcolor="white"> <center><h1>502 Bad Gateway</h1></center> <hr><center>nginx/1.14.0 (Ubuntu)</center> </body> </html> 。我现在收到“欢迎使用nginx!”在server_name [SERVER_IP_ADDRESS];处,在/etc/nginx/sites-available/app处未找到“ 404”

仅供参考,我的烧瓶应用只有一条路线,即“ / predict”

1 个答案:

答案 0 :(得分:0)

您似乎没有打开80端口,因此这里有一个快速的iptables命令:

sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT