2017-06-29 2 views
1

Ich habe einen Nginx-Server, der unter Debian läuft. Auf demselben Server läuft auch uWSGI mit einer Flask Python-Anwendung. Eine Sache, die ich versuche, ist, einen HTTP-Header an die Flask-Anwendung von nginx zu übergeben, der durch eine nginx-Bedingung bestimmt wird, nämlich welcher virtuelle Host die Anfrage ausführt.Übergeben Sie eine Kopfzeile von Nginx zum uWSGI-Backend, das eine Flask-Anwendung ausführt.

Ich versuche, einen HTTP-Header von Nginx (nicht vom Client) an das uWSGI-Backend zu übergeben, aber es wird nicht in Flask's DebugToolbar unter HTTP-Anfrage angezeigt.

Relevante Abschnitt von nginx Config

 location/{ 
       # First attempt to serve request as file, then 
       # as directory, then fall back to displaying a 404. 
       try_files $uri =404 @flaskapplication; 
} 
     location @flaskapplication { 
      include uwsgi_params; 
      uwsgi_pass unix:/tmp/flaskapplication.sock; 
      uwsgi_param HTTP_X_TESTING 'bar'; 
      uwsgi_modifier1 30; 
     } 

Während des Laufens sagte nginx Config des Headers nicht unter Flask-DebugToolbar HTTP-Request-Abschnitt nicht angezeigt, obwohl ich nicht sicher bin, wie zuverlässig das ist, weil ich ein injizierten HTTP-Header Ich weiß, beeinflusst Anwendungsverhalten mit Burp Suite X-Foo-Bar: 1 und es nicht unter der HTTP-Anfrage Abschnitt angezeigt, aber es hatte Einfluss auf das Verhalten der Anwendung (Eine bestimmte if-Anweisung in @app.before_request) Offensichtlich würde ich die Kopfzeile löschen, wenn der Client für es hinzugefügt sicherheits Gründe.

Der Screenshot oben ist HTTP-Header mit Flask-DebugToolbar versucht uwsgi_param für HTTP-Header zu tun.

Danke

Antwort

1

Gelöst es.

Ich habe den Debug-Modus von Flask aktiviert und eine Ausnahme ausgelöst, um Zugriff auf die REPL zu erhalten.

Mit uwsgi_param HTTP_X_FOO 'Foo bar lorem ipsum'; in der nginx Konfiguration in der betreffenden Stelle blockieren, sieht request.headers wie diese (private und unabhängige Informationen hat unkenntlich gemacht worden)

So request.headers! = Flask-DebugToolbar Anfrage Panel.

Verwandte Themen