python - 将静态文件服务从 flask 更改为 nginx?

标签 python nginx flask

我在 nginx 中运行我的 flask 项目。这是配置文件

server {

   listen  80;
   server_name site.in;
   root /root/site-demo/;
   access_log /var/log/site/access_log;
   error_log /var/log/site/error_log;

   location / {
      proxy_pass         http://127.0.0.1:4000/;
      proxy_redirect     http://127.0.0.1:4000 http://site.in;
      proxy_set_header   Host             $host;
      proxy_set_header   X-Real-IP        $remote_addr;
      proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
      proxy_set_header   X-Forwarded-Proto $scheme;
   }

}

当我试图将静态文件的过期部分放入 conf 时失败了。我读到这可能是因为静态文件是由 flask 而不是 nginx 提供的。如果是这样,我应该对上述 conf 文件进行哪些更改,以便 nginx 可以为我的项目完成静态文件服务。

根据回答,我如下更改了 conf。现在所有静态文件都显示 403 错误。

server {

   listen  80;
   server_name site.in;
   root /root/site-demo/;
   access_log /var/log/site/access_log;
   error_log /var/log/site/error_log;

   location / {
      proxy_pass         http://127.0.0.1:4000/;
      proxy_redirect     http://127.0.0.1:4000 http://site.in;
      proxy_set_header   Host             $host;
      proxy_set_header   X-Real-IP        $remote_addr;
      proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
      proxy_set_header   X-Forwarded-Proto $scheme;
   }
   location  /static {
      alias /root/site-demo/static;
      autoindex on;
      expires max;
   } 

}

最佳答案

将此添加到您的 nginx 配置中:

    location  /static {
        alias /path/to/your/static/folder;
        autoindex on;
        expires max;
    }

编辑

nginx 要求整个树都是可读的,而不仅仅是在 nginx.conf 中根开始的地方。所以命令

sudo chmod -R 777 /root/site-demo/static

应该可以解决权限问题。但是,我认为,出于安全原因,将您的站点放在 Web 服务器的 /root 目录中并不是一件好事。通常一个站点放在/var/www 文件夹下。

附言

chmod -R 777 命令授予所有者、组和其他人读取、写入和执行文件夹及其所有子文件夹中文件的权限。

关于python - 将静态文件服务从 flask 更改为 nginx?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31782005/

相关文章:

python - header 中返回的内容长度,用于使用 nginx、uwsgi 和 Flask 进行分块传输编码

Python - 使用正则表达式查找末尾没有%的数字

python - 以 'rb' 模式从 sys.stdin 读取文件 : Python

nginx - Nginx反向代理中的SSL直通?

nginx - 110 连接超时 - 使用 play 2.1.3 和 nginx

perl - 未知指令 "perl_modules"

python - Flask在执行长函数之前不是render_template

python - 如何将过滤后的excel表格导入python?

python - 在Python中生成一个名为当前时间的文本文件

python - 使用 url_for 函数为 Flask 测试客户端生成 URL