![Nginx + Gunicorn + Django - Nginx erlaubt keine statischen Dateien](https://rvso.com/image/617250/Nginx%20%2B%20Gunicorn%20%2B%20Django%20-%20Nginx%20erlaubt%20keine%20statischen%20Dateien.png)
Aktualisierter Code – funktioniert jedoch immer noch nicht.
Einstellungen.py
STATIC_ROOT = '/home/ubuntu/virtualenv/mysite/homelaunch/static/'
STATIC_URL = '/static/'
nginx-Konfiguration :: /etc/nginx/sites-enabled/mysite
server {
server_name ec2-x-x-x-x.compute-1.amazonaws.com;
access_log /home/ubuntu/virtualenv/mysite/error/access.log;
error_log /home/ubuntu/virtualenv/mysite/error/error.log warn;
connection_pool_size 2048;
location /static/ {
#alias /home/ubuntu/virtualenv/mysite/homelaunch/static/;
#alias /static/;
root /home/ubuntu/virtualenv/mysite/homelaunch/;
}
location / {
proxy_pass http://127.0.0.1:8001;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#proxy_set_header X-Forwarded-Host $server_name;
#proxy_set_header X-Real-IP $remote_addr;
add_header P3P 'CP="ALL DSP COR PSAa PSDa OUR NOR ONL UNI COM NAV"';
}
}
Gunicorn-Konfiguration –
command = '/usr/local/bin/gunicorn'
logfile = "/home/ubuntu/virtualenv/mysite/error/gunicorn.log"
loglevel = "info"
pythonpath = '/home/ubuntu/virtualenv/mysite'
bind = '127.0.0.1:8001'
vollständiger Pfad zum Bildverzeichnis und CSS-Verzeichnis:
/home/ubuntu/virtualenv/mysite/homelaunch/static/css
/home/ubuntu/virtualenv/mysite/homelaunch/static/img
Ich erhalte einen Fehler im error.log:
001/favicon.ico", host: "ec2-xx-xx-xx-xx.compute-1.amazonaws.com"
2013/09/02 16:57:42 [error] 2819#0: *1 connect() failed (111: Connection refused) while connecting to upstream, client: xx.xx.xx.xx, server: ec2-xx-xx-xx-xx.compute-1.amazonaws.com, request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:8001/", host: "ec2-xx-xx-xx-xx.compute-1.amazonaws.com"
Irgendetwas ist offensichtlich falsch? Ich erhalte immer noch einen 404-Fehler bei den IMG- und CSS-Dateien, wenn ich versuche, sie über die ausgegebene HTML-Quelle anzuzeigen.
Antwort1
Diese Antwort wurde bearbeitet, um die Lösungen zusammenzufassen.
In der Konfiguration von nginx
Ersetzen durch:
alias /home/ubuntu/virtualenv/mysite/homelaunch/;
mit:
root /home/ubuntu/virtualenv/mysite/homelaunch/;
Entsprechend derDokumentation: „Wenn der Standort mit dem letzten Teil des Wertes der Direktive übereinstimmt, ist es besser, stattdessen die Root-Direktive zu verwenden.“
Ersetzen durch:
proxy_set_header X-Forwarded-Host $server_name;
proxy_set_header X-Real-IP $remote_addr;
mit:
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
In Gunicorns Konfiguration
Ersetzen durch:
bind = 'ec2-x-x-x-x.compute-1.amazonaws.com:8001'
mit:
bind = '127.0.0.1:8001'
In den Django-Einstellungen
Einstellung STATIC_ROOT = '/home/ubuntu/virtualenv/mysite/homelaunch/static/'
, die den korrekten absoluten Dateisystempfad darstellt.
Einstellung DEBUG = True
, um detailliertere Fehlerinformationen zu erhalten.
Antwort2
Ersetzen Sie dies:
location /static/ {
alias /home/ubuntu/virtualenv/mysite/homelaunch/;
}
Für dieses:
location /static/ {
alias /home/ubuntu/virtualenv/mysite/homelaunch/static/;
}
Wenn Sie einen Alias verwenden, müssen Sie einen absoluten Pfad angeben, da Sie in settings.py ein statisches Verzeichnis definiert haben.
STATIC_URL = '/static/'
Wenn Sie also dieses Verzeichnis als Alias verwenden: /home/ubuntu/virtualenv/mysite/homelaunch/;
Nginx geht davon aus, dass sich die Statistikdateien unter /home/ubuntu/virtualenv/mysite/homelaunch/ und nicht unter /home/ubuntu/virtualenv/mysite/homelaunch/static befinden.
Entschuldigen Sie mein schlechtes Englisch, ich versuche mich zu verbessern :(
Ich hoffe du verstehst mich.