2016-09-16 85 views
0

新的flask/nginx/uWSGI服務器。應用程序加載和函數的預期,但非HTML/CSS模板將加載。在Chrome中使用開發人員工具顯示頁面未被退回。Nginx不會加載Flask靜態文件

「tail -f /var/log/nginx/error.log」表示文件或目錄不存在。但它似乎是正確的道路。完整路徑爲「/opt/netmgmt/app/static/css/main.css」

2016/09/15 22:04:40 [error] 4939#0: *1 open() "/app/static/css/main.css" failed (2: No such file or directory), client: 10.0.0.69, server: , request: "GET /static/css/main.css HTTP/1.1", host: "nms-srv2", referrer: "http://nms-srv2/" 

燒瓶調試完全沒有問題。 我一直對我的頭撞這一段時間,發現多個其他線程有同樣的問題,但沒有任何解決這個問題。

感謝您的幫助!

/etc/nginx/nginx.conf

worker_processes 1; 

events { 

worker_connections 1024; 

} 

http { 

    sendfile on; 

    gzip    on; 
    gzip_http_version 1.0; 
    gzip_proxied  any; 
    gzip_min_length 500; 
    gzip_disable  "MSIE [1-6]\."; 
    gzip_types  text/plain text/xml text/css 
         text/comma-separated-values 
         text/javascript 
         application/x-javascript 
         application/atom+xml; 

    # Configuration containing list of application servers 
    upstream uwsgicluster { 

     server 127.0.0.1:8080; 
     # server 127.0.0.1:8081; 
     # .. 
     # . 

    } 
    # Configuration for Nginx 
    server { 

     # Running port 
     listen 80; 

     # Settings to by-pass for static files 
     location ^~ /static/ { 

      # Example: 
      # root /full/path/to/application/static/file/dir; 
      root /app/; 

     } 

     # Serve a static file (ex. favico) outside static dir. 
     location = /favico.ico { 

      root /app/favico.ico; 

     } 

     # Proxying connections to application servers 
     location/{ 

      include   uwsgi_params; 
      uwsgi_pass   uwsgicluster; 

      proxy_redirect  off; 
      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-Host $server_name; 

     } 

應用程序文件(伊夫試圖改變靜態位置多種方式和使用別名,而不是根源,沒有運氣。)

@app.route('/') 
def home(): 
    return render_template('home.html') 

佈局。 html

<!DOCTYPE html> 
<html> 
    <head> 
    <title>NetMgmt</title> 
    <strong><link rel="stylesheet" href="{{ url_for('static', filename='css/main.css') }}"></strong> 
    </head> 
    <body> 
    <header> 
     <div class="container"> 
     <h1 class="logo">NetMgmt (beta)</h1> 
     <strong><nav> 
      <ul class="menu"> 
      <li><a href="{{ url_for('home') }}">Home</a></li> 
     </ul> 
     </nav></strong> 
     </div> 
    </header> 

    <div class="container"> 
     {% block content %} 
     {% endblock %} 
    </div> 
    </body> 
</html> 

回答

0

在你的nginx配置中使用你的絕對路徑static目錄。 static應該在路徑中:

location ^~ /static/ { 
    root /full/path/to/app/static/; 
} 
+0

使用「root/opt/netmgmt/app/static /;」我得到同樣的錯誤顯示路徑「/opt/netmgmt/app/static/static/css/main.css。使用」root/opt/netmgmt/app /; 「它適用於IE瀏覽器,但鉻/ FF沒有錯誤」資源解釋爲樣式表,但與MIME類型文本/平原傳輸「 – that1guy15