Dies ist meine virtuelle nginx-Host-Konfiguration.
%Vor%Dies ist der Quellcode meiner WSGI-Anwendung.
%Vor%Ich serviere meine WSGI-Anwendung mit diesen beiden Befehlen:
%Vor%Dies ist die Ausgabe, die ich sehe, wenn ich versuche, meine Webanwendung zu besuchen.
%Vor% Da ich uwsgi_modifier1 30;
in meiner nginx virtuellen Host-Konfiguration erwähnt habe, erwartete ich, dass PATH_INFO nur '/bar'
ist, wie in den folgenden zwei URLs erklärt:
Zitieren des relevanten Teils aus dem ersten Artikel:
Die Option
uwsgi_modifier1 30
legt den uWSGI-ModifiziererUWSGI_MODIFIER_MANAGE_PATH_INFO
fest. Dieser Änderungswert pro Anforderung weist den uWSGI-Server an, den PATH_INFO-Wert neu zu schreiben und SCRIPT_NAME daraus zu entfernen.
Zitieren des relevanten Teils aus dem zweiten Artikel:
Standard-WSGI-Anfrage, gefolgt vom HTTP-Anfragetext. Der PATH_INFO wird automatisch geändert und SCRIPT_NAME wird daraus entfernt.
Aber ich sehe, dass mein PATH_INFO als '/foo/bar'
intakt bleibt. Der SCRIPT_NAME-Teil, d. H.% Co_de%, wurde nicht daraus entfernt. Warum?
Nach dem Lesen von Ссылка habe ich verstanden, dass die Verwendung von uwsgi_modifier1 30;
veraltet ist.
So habe ich das Problem gelöst.
Zuerst habe ich die Behandlung von SCRIPT_NAME in nginx entfernt, indem ich diese beiden Zeilen entfernt habe:
%Vor%Die resultierende nginx-Konfiguration sah folgendermaßen aus:
%Vor% Dann habe ich nginx neu gestartet und die SCRIPT_NAME-Behandlung in uwsgi mit den Optionen --mount
und --manage-script-name
wie folgt durchgeführt.
Jetzt bekomme ich die erwartete Ausgabe.
%Vor%