繁体   English   中英

将静态文件服务从烧瓶更改为nginx?

[英]Change static file serving to nginx from flask?

我在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;
   }

}

当我试图将静态文件的expires部分放入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文件夹下。

PS

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

如果你在服务器或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;
}

在这里检查你的nginx配置:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM