【问题标题】:Change static file serving to nginx from flask?将静态文件从烧瓶更改为 nginx?
【发布时间】:2015-10-25 05:57:13
【问题描述】:

我正在 nginx 中运行我的烧瓶项目。这是conf文件

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 时,它失败了。我读到这可能是由于静态文件是由烧瓶而不是 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;
   } 

}

【问题讨论】:

  • Flask 不提供静态文件。
  • 所以您现在遇到了权限问题。我已经编辑了答案。
  • nginx.conf 中设置的user 是谁?
  • 您可以使用namei -om /root/site-demo/static命令行命令查看这些文件夹的权限。
  • drwxr-xr-x root root / ------- drwx------ root root root ---------- drwxr-xr-x 777 www -data site-demo --------- drwxrwxrwx 777 www-data static 这是我得到的输出。 www-data 是我认为的所有者

标签: python nginx flask


【解决方案1】:

如果你在服务器或 docker 上运行,你应该这样做:

server {
    listen 443;
    server_name sample.xx.code;
    location /{
      proxy_pass http://127.0.0.1:5000;
    }

    location  /static {
      proxy_pass http://video/static;
      expires max;
    }
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;
}

【讨论】:

    【解决方案2】:

    在此处检查您的 nginx 配置:

    /etc/nginx/sites-enabled/
    /etc/nginx/sites-available/
    

    我遇到了你描述的同样的问题 注意到我有几个配置文件 只保留一个配置文件固定 这个网站也很有帮助: https://realpython.com/blog/python/kickstarting-flask-on-ubuntu-setup-and-deployment/

    【讨论】:

      【解决方案3】:

      将此添加到您的 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 命令授予所有者、组和其他人读取、写入和执行文件夹及其所有子文件夹中文件的权限。

      【讨论】:

      • 更改权限并不能解决权限问题。我尝试过这个。仍然显示 403
      猜你喜欢
      • 1970-01-01
      • 2012-04-06
      • 1970-01-01
      • 2020-11-14
      • 1970-01-01
      • 2012-08-20
      • 1970-01-01
      • 2016-08-30
      • 1970-01-01
      相关资源
      最近更新 更多