簡體   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