2016-04-24 15 views
4

Nachdem ich gerade meine Site gewechselt habe, um über SSL bedient zu werden, habe ich Probleme, Django dazu zu bringen, die korrekte generierte URL: s für statische Dateien abzurufen.Django scheint HTTPS von statischen Datei-URLs zu entfernen - warum?

ist meine STATIC_URL Einstellung in Form von https://example.com/assets/static/

Als ich {% static 'css/file.css' %} in einer Vorlage zu tun, der Weg als http://example.com/assets/static/css/file.css kommt - das ist das gleiche wie zuvor.

Dinge, die ich habe versucht, hier Abhilfe zu schaffen:

  • Sicherzustellen, dass ich auf dem neuesten Stand bin verpflichten, mit den richtigen Einstellungen.
  • Ran python manage.py collectstatic
  • Neu gestartet nginx/gunicorn/Memcached
  • *.pyc -Dateien Gelöschte, nur für den Fall

Die gleiche Sache mit MEDIA_URL passiert. Wenn ich jedoch in eine interaktive Shell blicke und ein Modell importiere und dann die .url Eigenschaft einer hochgeladenen Bilddatei (zum Beispiel) ausdrucke, kommt es mit dem korrekten https:// -prefix heraus.

Ausführen von Django 1.9.5 mit CachedStaticFileLoader für statische Dateien, Gunicorn (v 19.4) und Vorlagencaching. Cache-Engine ist Memcache.

Irgendwelche Ideen, was vor sich geht?

bearbeiten: Einstellungen Änderungen für STATIC_URL und MEDIA_URL sind überhaupt nicht abgeholt, so scheint es, obwohl auch andere Änderungen am Code zu arbeiten scheinen. Ich habe keine Ahnung, was los ist ...

+0

Haben Sie 'os.environ ['HTTPS'] =" on "' und haben Sie versucht, die relative 'STATIC_URL' zu verwenden? Es ist auch eine gute Sache, von http zu HTTPS entweder in guncorn umleiten, entweder in nginx, das sollte die statische – aershov

+0

Ich benutze die 'SECURE_PROXY_SSL_HEADER' Einstellung, um den HTTPS-Status zu Django von Nginx zu kommunizieren, und es scheint zu arbeiten (Ich kann das Ergebnis von 'request.is_secure' in einer Vorlage ausgeben und gibt 'True' zurück). Ich habe versucht, dem env "HTTPS = on" hinzuzufügen, aber es hatte keine Auswirkungen auf mein Problem. Ich vermute, dass etwas anderes vor sich geht, da der Wert in 'MEDIA_URL' und' STATIC_URL' anscheinend gar nicht aufgenommen wird, relativ oder nicht. :-( – Emil

Antwort

2

Die Antwort war, dass keine Änderungen der Einstellungen überhaupt aufgenommen wurden - der Prozess von Gunicorn wurde aufgehängt und versuchte irgendwie neu zu starten (egal wie oft ich es erzählte) der alte Prozess läuft. Änderungen an Vorlagen usw. wurden aufgenommen (da es sich hierbei nicht um Python-Dateien handelt), aber die STATIC_URL wurde nie aktualisiert.

Dumme einfache Antwort: Neustart alle Dinge.