在服务器上访问文件时,Nginx返回404找不到的内容

时间:2018-03-16 01:48:09

标签: linux ubuntu nginx flask uwsgi

我有一台服务器(Ubuntu 16.04)和一个名为coxier的用户。

我将Nginx配置为代理请求。我创建了一个文件etc/nginx/sites-available/myproject

server {
    listen 80;
    server_name 101.200.36.xx;

    location / {
        include uwsgi_params;
        uwsgi_pass unix:/home/coxier/iemoji/server/iemoji.sock;
    }
}

在此瓶子项目中,服务器接收请求,然后为此请求生成.gif文件。

首先我直接使用flask#send_file发送大约1MB的gif文件,但速度非常慢。

所以我决定优化请求。

  • 接收http请求并生成gif文件。
  • 将生成的gif文件的url返回给用户。
  • 用户通过网址访问gif文件。

我有一个问题。 如何生成生成的gif的网址?

我试过如下。

server {
    listen 80;
    server_name 101.200.36.xx;

    root /home/coxier/iemoji/server/output;

    location / {
        include uwsgi_params;
        uwsgi_pass unix:/home/coxier/iemoji/server/iemoji.sock;
    }
}

例如,我想访问/home/coxier/iemoji/server/output/a3dfa3eb21daffc7085f71630cbd169e/output.gif

然后我将http://101.200.36.xx/a3dfa3eb21daffc7085f71630cbd169e/output.gif返回给用户。

但是nginx会返回 404 Not Found

1 个答案:

答案 0 :(得分:1)

https://docs.nginx.com/nginx/admin-guide/web-server/serving-static-content/,我找到解决方案。

server {
    listen 80;
    server_name 101.200.36.xx;


    location / {
        include uwsgi_params;
        uwsgi_pass unix:/home/coxier/iemoji/server/iemoji.sock;
    }

    location ~ \.(gif) {
        root /home/coxier/iemoji/server/output;
        sendfile           on;
        sendfile_max_chunk 1m;
    }
}

您应该在location块中重新定义root。

然后你就可以生成这样的url:

http://101.200.36.xx/a3dfa3eb21daffc7085f71630cbd169e/output.gif.