2017-03-07 3 views
0

bereitstellt Ich habe eine Kolben-App unter gunicorn -w 1 -b 0.0.0.0:8000 flaskapp:app mit unter nginx config. Wie kann ich jedoch feststellen, ob nginx die statischen Dateien tatsächlich bereitstellt oder nicht? Ich habe versucht, die alias /home/pi/Public/flaskapp/static/; zu .../static-testing/; zu ändern und nur einen Platzhalter style.css dort setzen, aber die Seite scheint wie zuvor zu laden.Vergewissern Sie sich, dass Nginx statische Dateien anstelle von Flask

server { 
    listen 5000; 
    server_name _; 
    location/{ 
     proxy_pass http://127.0.0.0.1:8000; 
     proxy_set_header Host $host; 
     proxy_set_header X-Real-IP $remote_addr; 
    } 
    location /static { 
     alias /home/pi/Public/flaskapp/static/; 
    } 
} 

Fehle ich etwas offensichtlich? muss man in den flaschenrouten etwas angeben?

+0

Sie haben die Regel, also dient sie ihnen. Wenn Sie die Regel entfernen, dient Flask ihnen (ineffizient). Der Rest ist wahrscheinlich auf das Browser-Caching zurückzuführen. – davidism

+0

aber, gibt es keine Möglichkeit zu sagen, dass das der Fall ist? –

+0

Schauen Sie sich die Gunicorn-Protokolle an. Handelt es sich um statische Assets? Wenn ja, dann ist Nginx nicht. – davidism

Antwort

0

So konfiguriert ich endlich die nginx richtig. Ich habe root hinzugefügt und den Hardpath von static entfernt, auch Logdateien hinzugefügt, die deutlich zeigen, dass statisch und css von nginx geladen wird! Ich habe auch den Abhörport auf 80 (Überraschung) geändert.

server { 
    listen 80; 

    server_name myapp.com; 
    root /home/pi/Public/myapp; 

    access_log /home/pi/Public/myapp/logs/nginx-access.log; 
    error_log /home/pi/Public/myapp/logs/nginx-error.log; 

    location/{ 
     proxy_pass http://127.0.0.1:8000; 
     proxy_set_header Host $host; 
     proxy_set_header X-Real-IP $remote_addr; 
    } 

    location /static/ { } 

    location /uploads/ { } 
} 
0

Sie können Ihrem nginx-Standortblock einen benutzerdefinierten Header hinzufügen und sehen, ob er in Ihren statischen Dateien festgelegt ist.

+1

Wie mache ich das? Ich bin neu mit nginx. –

0

Sie können dies wahrscheinlich mit einem leeren Pfad testen, der im/static/location erwähnt wird.

server { 
    listen 5000; 
    server_name _; 

    location /static/ { 

    } 

    location/{ 
     proxy_pass http://127.0.0.0.1:8000; 
     proxy_set_header Host $host; 
     proxy_set_header X-Real-IP $remote_addr; 
    } 

}

Dies wird 404-Fehler geben und somit können Sie überprüfen, ob Dateien, die von Nginx serviert werden.

+0

lädt weiterhin Dateien im statischen Ordner. Fazit: Mein Setup funktioniert nicht richtig? –

+1

Können Sie versuchen, '/ static' Block über'/'Block zu setzen, dann sehen, ob das funktioniert? –

0

Ich denke, der einfachste Weg ist, einige Upstream-Variablen in das Zugriffsprotokoll zu protokollieren.

http://nginx.org/en/docs/http/ngx_http_upstream_module.html#variables

Sie sollten diese in Ihre nginx conf im Block http hinzufügen

upstream backend { 
    server 127.0.0.0.1:8000; 
} 

dann die proxy_pass zu http://backend ändern;

Jetzt

log_format upstream '$upstream_bytes_received $upstream_response_time'; 
access_log /var/log/nginx-upstream upstream; 

auf Ihren Server-Block, und starten Sie nginx hinzuzufügen. Sie werden '-' sehen, wenn Nginx die Upstream nicht anfordert.

Doc: http://nginx.org/en/docs/http/ngx_http_log_module.html & http://nginx.org/en/docs/http/ngx_http_upstream_module.html

Verwandte Themen