将静态文件投放从Flask更改为Nginx?

Tyl*_*den 5 python nginx flask

我正在Nginx中运行我的Flask项目。这是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;
   }

}
Run Code Online (Sandbox Code Playgroud)

当我尝试将静态文件的过期部分放入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;
   } 

}
Run Code Online (Sandbox Code Playgroud)

dor*_*oru 1

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

    location  /static {
        alias /path/to/your/static/folder;
        autoindex on;
        expires max;
    }
Run Code Online (Sandbox Code Playgroud)

编辑

nginx要求整个树可读,而不仅仅是 nginx.conf 中根目录开始的位置。所以命令

sudo chmod -R 777 /root/site-demo/static
Run Code Online (Sandbox Code Playgroud)

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

聚苯乙烯

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