2016-04-14 22 views
4

Bir flask uygulaması için statik dosyaları sunmak için nginx (tabanca ile) kullanıyorum. Varsayılan statik klasördeVarsayılan statik konum için flask nginx ve statik dosyalar sorunu

Statik dosyalar iyi çalışıyor:

Ancak ben sadece Flask tarafından sunulan statik bir klasör kullanıyorum kullanıcılar giriş için erişimi kısıtlamak isteyen diğer statik dosyalar için
<link rel="stylesheet" href="{{ url_for('static', filename='css/fa/font-awesome.min.css') }}" /> 

:

html
app.register_blueprint(application_view) 

application_view = Blueprint('application_view', __name__, static_folder='application_static') 

Ben böylece statik dosyayı çağırıyorum:

<link rel="stylesheet" href="{{ url_for('application_view.static', filename='css/main.css') }}" /> 

sonra uygulama/application_static kısıtlanmış statik dosyaları var. Bu, yerel bir Flask yüklemesinde gayet iyi çalışıyor, ancak Nginx hizmet dosyaları ile bir üretim makinesine/static klasörüne konuşlandırdığımda bir "NetworkError: 404 Bulunamadı - website.com/application_static/main.css" aldım.

Bu sorunu işlemek için Ngix'i yapılandırma hakkında herhangi bir fikir?

conf.d/mysitename.conf dosyası:

upstream app_server_wsgiapp { 
    server localhost:8000 fail_timeout=0; 
} 

server { 
listen 80; 
server_name www.mysitename.com; 
rewrite ^(.*) https://$server_name$1 permanent; 
} 


server { 
    server_name   www.mysitename.com; 
    listen    443 ssl; 
    #other ssl config here 
    access_log   /var/log/nginx/www.mysitename.com.access.log; 
    error_log    /var/log/nginx/www.mysitename.com.error.log info; 
    keepalive_timeout  5; 
    # nginx serve up static files and never send to the WSGI server 
    location /static { 
    autoindex on; 
    alias /pathtositeonserver/static; 
    } 

    location/{ 
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
     proxy_set_header Host $http_host; 
     proxy_redirect off; 
     if (!-f $request_filename) { 
     proxy_pass http://app_server_wsgiapp; 
     break; 
    } 
    } 

    # this section allows Nginx to reverse proxy for websockets 
    location /socket.io { 
    proxy_pass http://app_server_wsgiapp/socket.io; 
    proxy_redirect off; 
    proxy_buffering 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_http_version 1.1; 
    proxy_set_header Upgrade $http_upgrade; 
    proxy_set_header Connection "Upgrade"; 
    } 
} 

nginx.conf: yapılandırma dosyasını yeniden sürece

user www-data; 
worker_processes 4; 
pid /run/nginx.pid; 

events { 
     worker_connections 768; 
     # multi_accept on; 
} 

http { 
    sendfile on; 
    tcp_nopush on; 
    tcp_nodelay on; 
    keepalive_timeout 65; 
    types_hash_max_size 2048; 

    include /etc/nginx/mime.types; 
    default_type application/octet-stream; 

    access_log /var/log/nginx/access.log; 
    error_log /var/log/nginx/error.log; 

    include /etc/nginx/conf.d/*.conf; 
    include /etc/nginx/sites-enabled/*; 
} 
+0

Bazı nginx yapılandırmasını ve uygulamanızın daha ayrıntılı bilgilerini gösterme. – iurisilvio

+0

Yerel makinenizde, flask wsgi sunucusunu veya tokmağını mı çalıştırıyorsunuz? Nginx conf dosyanızı da gönderebilir misiniz? – lesingerouge

+0

@iurisilvio Özür dilerim Daha erken geri gelmedim, başka bir projede yasıyorum. Conf.d ve nginx conf dosyalarını ekledim. Yerel dev ortamımda flask paketlenmiş sunucuyu çalıştırıyorum. –

cevap

1

gunicorn, eski kod hala çalışıyor olacak.

gunicorn'u durdurup yeniden başlatırsanız veya silah işlemine HUP sinyali gönderirsiniz.

+1

Tüm yapılandırma dosyalarını yeniden yüklerim ve dağıttığım her seferinde tabancayı durdurup yeniden başlatıyorum. –

İlgili konular