Python烧瓶gunicorn nginx上传文件

时间:2016-05-05 02:10:34

标签: python nginx flask gunicorn

按照本教程,我在digitalocean服务器上部署了一个烧瓶Web应用程序:link

我可以正确访问模板加载页面。但是,我无法上传或接收文件。我按照本教程上传文件:link

似乎nginx存在问题。 这就是现在的样子:

server {
    listen 80;
    server_name server_domain_or_IP;

    location / {
        include proxy_params;
        proxy_pass http://unix:/home/user/project/project.sock;
    }
}

nginx error.log:

2016/05/04 23:08:31 [crit] 2041#0: *16 rename() "/var/lib/nginx/proxy/0/01/0000000010" to 
"/usr/share/nginx/html/login" failed (13: Permission denied) while reading upstream, client: 
[ip], server: [ip], request: "GET /login HTTP/1.1",
upstream: "http://unix:/home/user/project/project.sock:/login", host: "[ip]"

更新:我已更新了我的项目的nginx配置文件,现在我可以向用户提供图片,但我仍然无法上传:

server {
    listen 80;
    server_name server_domain_or_IP;
    client_max_body_size 500M;
    location / {
        include proxy_params;
        proxy_pass http://unix:/home/user/project/project.sock;
        location /photo/ {
            proxy_store on;
            proxy_store_access all:rw;
            #photo directory
            alias /home/user/project/project/photos/;
        }
    }
}

1 个答案:

答案 0 :(得分:0)

我使用 Nginx 作为代理将文件正常上传到烧瓶。 与您尝试做的事情有关的差异...... 我没有将烧瓶项目变成 Linux 服务。 即使用户注销,我也使用 PM2 使烧瓶在后台运行。

提示是让烧瓶在没有 PM2 的终端中运行,以便在尝试发送文件时能够查看输出。它将显示正在发生的错误类型。

这适用于 POP-OS 20.04 LTS...

另一个细节是检查是否允许 Flask 用户当场写入。

我的Nginx配置如下:

location / {
    proxy_pass http://127.0.0.1:5000$request_uri;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    client_max_body_size 5M;
    }
        location /upload {
        proxy_pass http://127.0.0.1:5000$request_uri;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        proxy_store on;
        proxy_store_access all:rw;
        client_max_body_size 5M;
        }