In meiner Flask-Konfiguration setze ich SERVER_NAME auf eine Domain wie "app.example.com". Ich mache das, weil ich url_for
mit _external
URLs verwenden muss. Wenn SERVER_NAME nicht festgelegt ist, denkt Flask, dass der Server 127.0.0.1:5000 ist (er läuft tatsächlich hinter einem Reverse-Proxy) und gibt eine externe URL wie http://127.0.0.1:5000/location
zurück.
So weit, so gut. Aber hier ist mein Problem: Wenn SERVER_NAME gesetzt ist, gibt jede URL 404 zurück. Ich sehe, dass jede Anfrage den Server auf die richtige URL trifft, Flask antwortet jedoch mit 404. Wenn ich SERVER_NAME deaktiviere, wird die richtige Seite zurückgegeben.
Ich benutze Apache mit ProxyPass und ProxyPassReverse (Ich weiß, ich würde lieber Nginx verwenden, aber es ist eine Voraussetzung). Hier sind die Header, die ich hinzufüge:
%Vor%Irgendwelche Ideen?
Habe gerade die Antwort gefunden. Apache hat eine Option namens ProxyPreserveHost
. Sobald es auf Ein eingestellt ist, funktioniert alles wie erwartet.
Weitere Informationen finden Sie hier: Ссылка