Nginx + Gunicorn-反向代理不起作用

时间:2019-01-22 01:54:09

标签: nginx gunicorn flask-restful nginx-reverse-proxy

我正在尝试遵循本指南https://www.digitalocean.com/community/tutorials/how-to-serve-flask-applications-with-gunicorn-and-nginx-on-ubuntu-18-04在服务器上设置python flask应用程序。请按照指南在本地计算机上运行此工作。但是,当我尝试在具有相同配置的实际服务器上实施时,在将请求代理回gunicorn服务器时遇到问题。我可以毫无问题地从Nginx提供静态内容。当我从静态内容向Nginx进行Web服务调用时,应将其代理回gunicorn服务器。

例如,当我尝试拨打电话“ http://example.com/rest/webService”时,我希望Nginx将以/ rest /开头的所有内容传递回gunicorn。下面的错误是我在错误日志中可以看到的关于正在发生的一切:

2019/01/18 12:48:18 [错误] 2930#2930:* 18 open()“ / var / www / html / rest / webService”失败(2:无此类文件或目录),客户端: ip_address,服务器:example.com,请求:“ GET / rest / webService HTTP / 1.1”,主机:“ example.com”,引荐来源网址:“ http://example.com/

这是python_app的设置:

server {
    listen 80;

    server_name example.com www.example.com;
    root /var/www/html;
    index index.html;

    location ^/rest/(.*)$ {
            include proxy_params;
            proxy_pass http://unix:/home/username/python_app/python_app.sock;
    } }

对我的nginx.conf文件的唯一更改是将“ include / etc / nginx / sites-enabled / *”更改为“ include / etc / nginx / sites-enabled / python_app”。

如果您对我可能缺少的内容有任何想法,请告诉我!谢谢!

1 个答案:

答案 0 :(得分:0)

不是解决方案,而是一些问题。...

如果您运行

sudo systemctl status myproject

您是否看到gunicorn正在运行的确认,以及绑定到哪个套接字?

而且

sudo nginx -t 

回来说没有诊断?

nginx的位置块中的正则表达式-我没有看到与指南中类似的东西,我看到您正在尝试捕获“ rest /”之后的所有内容,但是在查看nginx文档时,我认为您必须要有$ 1才能引用URL的捕获部分。您可以在没有“ ^ / rest /(.*)$”的情况下尝试一下,看看nginx是否找到任何东西吗?

拥有目录的组是nginx所属的组(很多设置是www-data)