Seite 1 von 1

https - nginx - uwsgi - flask

Verfasst: Samstag 6. Februar 2021, 13:15
von naheliegend
Hi,

ich habe ein paar Verständnisfragen.

1.) Wenn ich meinen nginx als reserve proxy verwende und dort TLS konfiguriert habe (Zertifikat, PKey, etc), muss ich dann in meiner Flask-App noch Konfigurationen bzgl https setzen?

2.) Ich bin mir unsicher, ob ich noch etwas zwischen nginx und uwsgi einstellen muss oder reicht es, wenn ich auf meinem web server
uwsgi uwsgi.ini
ausführe, nachdem ich es pip install uWSGI?

LG und schönes Wochenende

Re: https - nginx - uwsgi - flask

Verfasst: Samstag 6. Februar 2021, 13:34
von kbr
Zu 1: Nein, nach der ssl-Terminierung im Proxy brauchst Du keine weiteren nachgelagerten Tests auf das https-Protokoll.

Zu 2: Der nachgelagerte wsgi-Server ist normaler Server, nur das dieser nicht direkt aus dem Internet angesprochen wird, sondern ausschließlich über den Proxy. D.h. Du musst auch diesen Server so konfigurieren, sei es durch Parameter oder eine Konfigurationsdatei, so wie das von dem jeweilig verwendeten Server erwartet wird. So muss z.B. konfiguriert werden, wie Proxy und wsgi-Server miteinander kommunizieren.

Das gilt auch für uWSGI, wenn von den default Einstellungen abgewichen werden soll. uWSGI verwende ich allerdings nicht mehr.

Re: https - nginx - uwsgi - flask

Verfasst: Samstag 6. Februar 2021, 14:09
von noisefloor
Hallo,

zu 2: du musst den WSGI Applikationsserver so konfigurieren, dass er das macht, was er soll. Wenn ein nginx als Proxy davor sitzt, dann lässt man den WSGI Server normalerweise auf `localhost` und einen unprivilegiertem Port (gerne 8080 oder 8000) laufen. Der Proxy-Server ist dann das Bindeglied zwischen dem Internet und dem WSGI-Applikationsserver auf localhost.

_Persönlich_ finde ich übrigens Gunicorn einfacher zu nutzen (zumindest für Hobby-Admins wie mich :-) ), aber unter Strich ist im Python-Umfeld Gunicorn und uwsgi ungefähr gleich gängig.

Gruß, noisefloor

Re: https - nginx - uwsgi - flask

Verfasst: Samstag 6. Februar 2021, 16:54
von naheliegend
Danke. Eine letzte Frage.

Wie sage ich dem Webserver, dass beispielsweise alles was reinkommt an 127.0.0.1:8080 weitergeleitet werden soll?

Die Doku sagt, dass
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:8080;
}
in das nginx.config file geschrieben werden muss.

Und dann den uWSGI oder Gunicorn auf 127.0.0.1:8080 laufen lassen? Das war es? Oder habe ich etwas vergessen?

Re: https - nginx - uwsgi - flask

Verfasst: Samstag 6. Februar 2021, 17:12
von noisefloor
Hallo,

also im einfachsten Fall lautet die Direktive wie im uu.de Wiki beschrieben. So mache ich das auch für Gunicorn. Da ist uwsgi nicht nutze kann ich dir nicht sagen, ob das da anders sein soll / muss.

Gruß, noisefloor

Re: https - nginx - uwsgi - flask

Verfasst: Samstag 6. Februar 2021, 17:17
von kbr
Wenn proxy und wsgi-Server auf der gleichen Maschine laufen, dann könntest Du auch einen Unix Socket-File nehmen, falls das OS dies unterstützt. So braucht der wsgi-Server erst gar keinen Port zu öffnen.

Re: https - nginx - uwsgi - flask

Verfasst: Samstag 6. Februar 2021, 18:21
von naheliegend
noisefloor hat geschrieben: Samstag 6. Februar 2021, 17:12 also im einfachsten Fall lautet die Direktive wie im uu.de Wiki beschrieben. So mache ich das auch für Gunicorn. Da ist uwsgi nicht nutze kann ich dir nicht sagen, ob das da anders sein soll / muss.
ich habe die Information hier her: uWSGI docs - Putting behind a full webserver
Sieht ein wenig anders aus.

@kbr : Was ist der Vorteil von einem Unix Socket-File dann?

Re: https - nginx - uwsgi - flask

Verfasst: Sonntag 7. Februar 2021, 12:03
von noisefloor
Hallo,

@naheliegend: in der von dir verlinkten Doku ist doch alles erklärt inkl. warum man welche Zeile wo eintragen soll. Von daher verstehe ich jetzt auch eine Eingangsfrage nicht mehr... Oder misstraust du der Doku von uwsgi und möchtest hier hören, dass die Doku richtig ist?

Gruß, noisefloor