Wie hostet man mehrere flash-Apps unter einer einzigen Domain, die auf nginx gehostet wird?

9

Was ich erreichen möchte:

Ich habe einen nginx-Webserver, der mydomain.com hostet. Wenn jemand meine domain.com in seinen Client eingibt, möchte ich, dass mein Server index.html von /var/www/mydomain/ aus bedient. Wenn sie mydomain.com/flaskapp1 eingeben, sollten sie flaskapp1 sehen. Wenn sie mydomain.com/flaskapp2 eingeben, sollten sie flaskapp2 sehen.

Ich habe es geschafft, die eine oder andere Flasche Apps zu bekommen, die das Tutorial hier verwendet Ссылка Aber wenn ich versuche, zwei separate Flaschen-Apps zu bedienen, stoße ich in Schwierigkeiten. Anstatt die Flask-App zu sehen, erhalte ich eine 404-Meldung, wenn ich versuche, in einem Browser auf eine der Flask-Apps mit mydomain.co.uk/flaskapp oder mydomain.co.uk/flaskapp2 zuzugreifen.

Das habe ich bisher:

Katze /etc/nginx/sites-available/mydomain.co.uk

%Vor%

Die obige Datei wurde sim in /etc/nginx/sites-enabled verlinkt.

cat /etc/uwsgi/apps-available/flaskapp.ini

%Vor%

Katze /etc/uwsgi/apps-available/flaskapp2.ini

%Vor%

Beide INI-Dateien wurden in /etc/uwsgi/apps-enabled symbolisch verknüpft. UWSGI startet ohne Probleme neu und läuft. Sowohl flaskapp.sock als auch flaskapp2.sock gehören zu www-data

Katze /var/www/flaskapp/flaskapp.py

%Vor%

cat /var/www/flaskapp2/flaskapp2.py

%Vor%

Katze /var/www/mydomain.co.uk/index.html

%Vor%

Beide virtuellen Umgebungen haben Flask installiert und werden die Flask-Apps mit dem Entwicklungsserver ausführen.

Ich hoffe, es ist etwas Einfaches, das ich vermisst habe.

    
Hoppo 09.01.2016, 10:57
quelle

2 Antworten

6

Schauen Sie sich die uwsgi-Dokumentation für NGINX hier an.

Speziell:

  

Leider kann nginx PATH_INFO nicht entsprechend neu schreiben   SCRIPT_NAME Aus diesem Grund müssen Sie uWSGI anweisen zu mappen   bestimmte Apps im sogenannten "Mountpoint" und schreibe SCRIPT_NAME um   und PATH_INFO automatisch:

Ich habe meine flaskapp.ini und flaskapp2.ini Dateien so geändert, dass sie die Mountpunkte für die Apps enthalten und die Variable manage-scriptname aktiviert haben.

cat /etc/uwsgi/apps-available/flaskapp.ini

%Vor%

Katze /etc/uwsgi/apps-available/flaskapp2.ini

%Vor%

Und jetzt laufen beide flash-Apps wie benötigt über uwsgi bis nginx.

    
Hoppo 11.01.2016, 11:52
quelle
5

Das Problem ist hier: Beide Flaschen-Apps haben keine Ahnung, dass sie aus dem Unterverzeichnis in Ihrer Domain geliefert wurden. Nginx übergibt die vollständige URL an sie, nicht die URL relativ zu diesem Verzeichnis, daher wird jede URL relativ zu root gesendet. Sehen wir das im Beispiel:

Angenommen, Sie haben drei Ansichten in Ihrer flaskapp, die auf den URLs /one/ , /two/ und /three/ angezeigt werden. Wenn Sie also versuchen, auf die URL /one/ zuzugreifen, geben Sie address: http://yourdomain.com/flaskapp/one/ ein. Flask wird von der nginx-URL /flaskapp/one/ empfangen, aber es gibt keine solche Ansicht in dieser App, sodass 404 als Antwort gesendet wird.

Was Sie tun können, ist, jede flaskapp-Datei darüber zu informieren, dass sie nicht im Domänenstamm, sondern in einem bestimmten Unterverzeichnis bereitgestellt wird. Sie können dies erreichen, indem Sie SCRIPT_NAME uwsgi_param mit dem Unterverzeichnis location in value senden, so dass Ihre nginx config folgendes enthält:

%Vor%     
GwynBleidD 10.01.2016 01:25
quelle

Tags und Links