subdirectory

___ qstnhdr ___ nginx dient Django in einem Unterverzeichnis über uWSGI ___ answer35794324 ___

Entfernen Sie zunächst %code% . Django behandelt %code% von selbst und muss nicht %code% von uWSGI neu geschrieben haben. Es kann schädlich sein, wenn %code% nicht von uWSGI aus den Headern entfernt wird.

Zweitens, entfernen Sie %code% von nginx config. %code% ist bereits in der Datei uwsgi_params definiert und sollte %code% sein (wie in uwsgi_params), nicht %code% , wenn Sie %code% an django übergeben.

Nach diesen Optimierungen sollte django %code% als URL-Präfix behandeln und wird den URL-Dispatcher und die URL darauf umstellen.

    
___ qstntxt ___

Ich habe bereits einige vorherige Threads durchgegangen: Wie setze ich ein Unterverzeichnis in nginx mit Django wie man django unter einem Vorort hinter nginx einsetzt Serving-Flaschen-App im Unterverzeichnis nginx + uwsgi

Die grundlegende Lektion ist, dass Sie nur Ihre Site (s-available) konfigurieren müssen, um dies zu erreichen. Ich habe jetzt verschiedene Permutationen von

ausprobiert %Vor%

Alles läuft perfekt, wenn ich den Ort als "/" definiere (und SCRIPT_NAME, modifier1, PATH_INFO und root egal. Aber wenn ich versuche, ein Unterverzeichnis zu verwenden, wird immer Seite nicht gefunden (404):

%Vor%

(bearbeiten) Es wird ein Verzeichnis zur Anfrage hinzugefügt. Was finde ich nicht heraus?

(versucht forced_script_name - sollte dies nicht verwenden und gibt andere Arten von Kopfschmerzen - und uwsgi config Einstellung)

BEARBEITEN:

%Vor%

Funktioniert nicht ... Der Socket ist da und funktioniert, wenn ich für / konfiguriere - ich kann einfach nicht sehen, was mir fehlt.

UPDATE:

%Vor%

Dies lädt die Seite, aber alle Links verweisen auf Ссылка anstelle von Ссылка

    
___ answer40496307 ___

Der nginx %code% ist in uWSGI veraltet.

Ihr Ziel ist es, in der Lage zu sein, eine wsgi-App von überall aus zu hosten, ohne dass die App angepasst werden muss, um zu berücksichtigen, woher sie stammt.

Die aktuelle Methode dafür in uWSGI besteht darin, Mountpoints für jede URI-App-Kombination wie folgt zuzuordnen:

%Vor%

Hosten mehrerer Apps im selben Prozess (auch Verwalten von SCRIPT_NAME und PATH_INFO)

%code% kann den Platz von %code%

einnehmen

Speziell für Django,

%Vor%     
___ tag123nginx ___ Nginx ("engine x") ist ein Webserver, Reverse Proxy, TCP-Stream-Proxy und Mail-Proxy, der unter einer BSD-ähnlichen Lizenz veröffentlicht wird. ___ tag123uwsgi ___ uWSGI ist ein schneller, selbstheilender und entwickler- / sysadminfreundlicher Anwendungscontainerserver, der in reinem C codiert ist. ___ tag123django ___ Django ist ein serverseitiges Open-Source-Webanwendungs-Framework, das in Python geschrieben wurde. Es wurde entwickelt, um den Aufwand für die Erstellung komplexer datengesteuerter Websites und Webanwendungen zu reduzieren, mit besonderem Fokus auf weniger Code, keine Redundanz und expliziter als implizit. ___ answer35999632 ___

Schließlich gab es auf, dies "ordentlich" zu tun.

Die letzte Lösung bestand lediglich darin, eine Einstellungsvariable zu erstellen, die ich der Datei static_url voranstellte und die Datei urls.py projiziert. Kein SCRIPT_NAME oder etwas Kompliziertes auf der nginx-Seite.

    
___ tag123subverzeichnis ___ Ein Unterverzeichnis ist ein Verzeichnis, das in einem anderen Verzeichnis enthalten ist. ___ answer35901518 ___

Wenn die Anwendung so einfach ist, dass ein einfaches "/ Präfix" zu einer Zeile in %code% hinzugefügt werden kann, dann bevorzuge ich diese einfache Lösung ohne mehr.

Andernfalls muss "/ prefix" an die Spalte %code% im Datensatz für Ihre Website in der Tabelle Sites in Django angefügt werden Administrator. Die Domain sollte dann "example.com/project" mit der zweiten Lösung sein, denn Django muss die Domain und das Präfix kennen, insbesondere für die korrekte Weiterleitung. Natürlich muss das Präfix auch von der URL der Anfrage vom Webserver entfernt werden, wie Sie es jetzt in nginx Einstellungen tun.

Normalerweise teile ich die Überprüfung solcher Bereitstellungen auf zwei Fragen:

  • Meldet der Webserver (nginx) die erwarteten kürzeren oder längeren URLs an Django?
  • Kennt Django seine vollständige Basis-URL und verwendet sie diese auf allen Webseiten konsistent?

Ich benutze sowohl nginx log als auch Django logging enabled, um zu sehen, welcher von ihnen schließlich falsch dargestellt wird. (Sie haben nicht genug wichtige Informationen geschrieben.)

Ein wichtiger Fall, der getestet werden sollte, ist: Stellen Sie sicher, dass Webseiten, die eine Authentifizierung erfordern, zur Anmeldeseite hin und zurück weitergeleitet werden, auch wenn Sie diese URLs nach dem Abmelden versuchen.

Weitere Details finden Sie in der ähnlichen Frage .

    
___
4
Antworten

nginx dient Django in einem Unterverzeichnis über uWSGI

Ich habe bereits einige vorherige Threads durchgegangen: Wie setze ich ein Unterverzeichnis in nginx mit Django wie man django unter einem Vorort hinter nginx einsetzt Serving-Flaschen-App im Unterverzeichnis nginx + uwsgi Die grundlege...
04.03.2016, 09:31