我正在尝试遵循本指南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”。
如果您对我可能缺少的内容有任何想法,请告诉我!谢谢!
答案 0 :(得分:0)
不是解决方案,而是一些问题。...
如果您运行
sudo systemctl status myproject
您是否看到gunicorn正在运行的确认,以及绑定到哪个套接字?
而且
sudo nginx -t
回来说没有诊断?
nginx的位置块中的正则表达式-我没有看到与指南中类似的东西,我看到您正在尝试捕获“ rest /”之后的所有内容,但是在查看nginx文档时,我认为您必须要有$ 1才能引用URL的捕获部分。您可以在没有“ ^ / rest /(.*)$”的情况下尝试一下,看看nginx是否找到任何东西吗?
拥有目录的组是nginx所属的组(很多设置是www-data)